我在尝试爬取某个职位发布网站时遇到问题。首先,我的网址在CSV文件“ urls.csv”中
通常,代码运行良好,但是有时我会收到此错误:“ AttributeError:'NoneType'对象没有属性'text'”,有时在1次迭代之后,有时是在30次之后。如果问题出在假设i = 230,如果我再次运行它,它将解析该url,然后在进行一些迭代后再次停止。
有人可以建议吗? 谢谢!
此外,该错误发生在line textoffer = ......
编辑:链接到csv:https://github.com/DonCheiron/Scraping-Be.Indeed/blob/master/urls.csv
import bs4 as bs
import urllib.request
import csv
with open('C:/Users/******/Desktop/urls.csv', 'r') as f:
reader = csv.reader(f)
pages = list(reader)
for i in range (0,300):
page = ''.join(map(str, pages[i]))
print('Working on ' + str(i)+ "...")
sauce = urllib.request.urlopen(page).read()
soup =bs.BeautifulSoup(sauce,'lxml')
textoffer = soup.body.div.find('div',class_='jobsearch-JobComponent-description icl-u-xs-mt--md').text
file = open(str(i)+ '.txt','w')
file.write(textoffer)
file.close()
print(str(i) + " Done!")
答案 0 :(得分:1)
使用您提供的一些随机网址,我尝试:
.jar
输出:
- build/libs/myApp-*.jar
Traceback非常清楚,向您显示了在找不到任何内容的情况下尝试将with open('urls.csv', 'r') as f:
reader = csv.reader(f)
pages = list(reader)
for counter, url in enumerate(pages):
print(counter, ''.join(url))
page_response = requests.get(''.join(url))
print(page_response)
soup = BeautifulSoup(page_response.content, 'html.parser')
print(soup.body.div.find('div',class_='jobsearch-JobComponent-description icl-u-xs-mt--md')).text
转换为0 https://be.indeed.com/rc/clk?jk=39582947a2d91970&fccid=adb55a49f6636f0e&vjs=3
<Response [200]>
None
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-511-2b829cd9fc45> in <module>()
4 print(page_response)
5 soup = BeautifulSoup(page_response.content, 'html.parser')
----> 6 print(soup.body.div.find('div',class_='jobsearch-JobComponent-description icl-u-xs-mt--md')).text
7
8
AttributeError: 'NoneType' object has no attribute 'text'
的问题。至于为什么相同的URL有时仅具有此类,为什么它不是相同的URL或不是总是包含相同元素的动态页面。