मैं एक साइट से जानकारी परिमार्जन करने का प्रयास कर रहा हूं, लेकिन मुझे एक त्रुटि मिल रही है:

AttributeError: 'NoneType' object has no attribute 'parent'

क्या आप कृपया मुझे बता सकते हैं कि इस त्रुटि को कैसे छोड़ें और डेटा एकत्र करते रहें? मैं जिस कोड का उपयोग कर रहा हूं वह है

import requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor
import pandas as pd


def main(req, num):
    r = req.get(web+"/page/{}/".format(num))
    soup = BeautifulSoup(r.content, 'html.parser')
    for article in soup.select('article.border_top'):
        print(article.select_one('span.homepage_post-date').text)
        print(article.select_one('h1.homepage_post_title').text)
        print(article.select_one('p').text)
        try:
            print(article.select_one("a.read-more").parent.contents[0])# this seems causing the issue
        except:
            print(num)
    return article.select_one('span.homepage_post-date').text, article.select_one('h1.homepage_post_title').text, article.select_one('p').text, article.select_one("a.read-more").parent.contents[0]  # this seems causing the issue


with ThreadPoolExecutor(max_workers=30) as executor:
    with requests.Session() as req:
        fs = [executor.submit(main, req, num) for num in range(1, 128)] # this sets the range of pages
        allin = []
        for f in fs:
            allin.append(f.result())
0
user14289862 17 नवम्बर 2020, 03:57

1 उत्तर

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

आपको कोशिश ब्लॉक में पैरेंट नोड तक पहुंचना चाहिए, बस यहां मान असाइन करें, यदि नोड गुम है, तो डिफ़ॉल्ट वैल सेट करें:

parent_content = None
try:
    parent_content = article.select_one("a.read-more").parent.contents[0])
except:
    parent_content = 'some default value'

अधिक आम तौर पर, आपको कोशिश करना चाहिए ... लूप की शीर्ष परत को छोड़कर, किसी भी त्रुटि को पकड़ा जाना चाहिए और संदेश को प्रिंट करना चाहिए लेकिन पुनरावृत्ति को बाधित नहीं करना चाहिए, यह मेरी तरफ से क्रॉल करने के लिए एक व्यावहारिक चाल है

0
Kun Hades 17 नवम्बर 2020, 01:47