import requests
from bs4 import BeautifulSoup
import pprint

response= requests.get("https://www.biospace.com/news/")
soup = BeautifulSoup(response.text, 'html.parser')

link= soup.select(".lister__header")
#print(link)

def list_articles(link):
    articles=[]
    for index, item in enumerate(link):
        title= link[index].getText()
        atab= link[index].a
        href= atab.get('href') 
        url= 'https://www.biospace.com'+href
        articles.append({'title':title, 'link':url})
    return articles

pprint.pprint(list_articles(link))

with open('Current_BioSpace_Articles.txt', mode='w') as file:
    text_file=(list_articles(link)) 
    file.write(f"{text_file}")

मेरी शक्तियों पर लिंक और शीर्षक बड़े करीने से प्रदर्शित होते हैं, हालांकि, मेरे टेक्स्ट दस्तावेज़ पर यह बहुत गन्दा है, मैंने प्रत्येक कुंजी और शब्दकोश के मूल्य को एक अलग पंक्ति में लिखने के लिए लूप करने की कोशिश की लेकिन यह एक सूची में लपेटा गया है।

अद्यतन: तो मैं सूची में प्रत्येक तत्व पर पुनरावृति करने में सक्षम था। निम्न कार्य करके-

    text_file=(list_articles(link)) 
    for element in text_file:
        file.write(f"{element}\n")

और यह पाठ दस्तावेज़ में इस तरह निकलता है:

{'शीर्षक': "लेख का शीर्षक", 'लिंक': "url"} और प्रत्येक पंक्ति में लेख का शीर्षक और केवल एक लेख का url लिंक है।

क्या शीर्षक और यूआरएल को अलग-अलग पंक्तियों में रखने का कोई तरीका है और उदाहरण के लिए प्रत्येक लेख के बीच में एक जगह है: ………………… ..

शीर्षक: "लेख का शीर्षक"
लिंक: "यूआरएल"

शीर्षक: "लेख का शीर्षक"
आदि।

0
Nakul Joy 27 मार्च 2020, 20:13

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा लगता है कि आप टेक्स्ट फ़ाइल पर प्रीटीप्रिंट करना चाहेंगे ताकि परिणाम वही होगा जो आपको पॉवरशेल विंडो में मिलता है।

यह आपके कोड के आउटपुट भाग को निम्नानुसार संशोधित करके किया जा सकता है प्रति इस पोस्ट

import print

# Create result to output
text_file = list_articles(link) 

# Pretty print to console
pprint.pprint(text_file)

# Pretty print to file
with open('Current_BioSpace_Articles.txt', 'wt') as file:
    pprint.pprint(text_file, stream = file)
0
DarrylG 27 मार्च 2020, 18:16