我正试图从网站上获取车辆清单。我正在使用Python和Scrapy。
但是在某些情况下,我的回答是空的。每次都会发生这种情况,但不是在同一位置,也不是在同一网址上。
代码如下:
if init_total_results > 400:
urls_with_mileage_ranges = []
for mileage in MILEAGE_RANGES:
if mileage[1] <= MAX_MILEAGE:
new_link = '{0}&kmfrom={1}&kmto={2}'.format(init_url, mileage[0], mileage[1])
urls_with_mileage_ranges.append(new_link)
for url in urls_with_mileage_ranges:
yield scrapy.Request(url, callback=self.parse_pages)
urls_with_mileage_ranges
如下:
[
'https://www.autoscout24.be/nl/resultaten?cy=B&size=20&atype=C&mmvmk0=29&kmfrom=0&kmto=2500',
'https://www.autoscout24.be/nl/resultaten?cy=B&size=20&atype=C&mmvmk0=29&kmfrom=2501&kmto=5000',
'https://www.autoscout24.be/nl/resultaten?cy=B&size=20&atype=C&mmvmk0=29&kmfrom=5001&kmto=10000',
'https://www.autoscout24.be/nl/resultaten?cy=B&size=20&atype=C&mmvmk0=29&kmfrom=10001&kmto=15000',
'https://www.autoscout24.be/nl/resultaten?cy=B&size=20&atype=C&mmvmk0=29&kmfrom=15001&kmto=20000',
'https://www.autoscout24.be/nl/resultaten?cy=B&size=20&atype=C&mmvmk0=29&kmfrom=20001&kmto=25000'
]
parse_pages
函数如下:
def parse_pages(self, response):
try:
# Get total result for every range
total_results = int(response.css('h1 span.cl-filters-summary-counter::text').extract_first().replace('.', ''))
urls_to_fetch = create_urls_to_fetch(total_results, response.url)
# call parse_page function for every url
for url in urls_to_fetch:
yield scrapy.Request(url, callback=self.parse_page)
except Exception as e:
capture_error(str(e))
对于urls_with_mileage_ranges
中的每个页面,我都会得到status 200
,但是对于total_results
,有时会出现错误。就像我说的那样,这每次都会发生,但不会在同一位置,也不会在同一网址上发生。我得到的错误是:
'NoneType' object has no attribute 'replace'
自动侦察器上的每个页面都会渲染该部分,如下所示:
如果我做inspect_element
,则如下所示:
因此,一切似乎都很好,但仍然出现该错误。
任何建议如何解决?