1. requests异常
[<Element span at 0x223a9da6488>]
- 可能原因:
1. http 的连接数超过最大限制,默认的情况下连接是keep-alive的,导致了服务器保持了太多连接而不能再新建连接。
2. ip 被封。
3. 请求过快。
- 解决方法:
1. 在header中不使用持久连接。设置
‘Connection’: ‘close’
或
requests.adapters.DEFAULT_RETRIES = 5
2. requests请求时有时会请求不到页面,或是请求到空白的页面,超时要重试几次,使用语句:try…except...
3. 使用代理ip
4. 若是请求过快,可设置time.sleep
try:
page = requests.get(url)
except:
time.sleep(5)
continue
2. 输出<Element a at 0x???????>
- 原因:打印变量的时候得到的这个值,其实它是一个列表,然后列表中的每一个值都是一个字典
- 解决措施:
links = text.xpath('//*[@id="interest_sectl"]/div/span[2]')
for index in range(len(links)):
# links[index]返回的是一个字典
if (index % 2) == 0:
star_5 = links[index].text
print(star_5)
3. 不规则数据爬取
- 方法一 XPath 选择器
在批量爬取时,通过右击网页标签选择XPath地址(如图1所示)时往往存在页面网页结构不一致等问题,这时采用Xpath选择器方法绝大多数情况下可以有效获取信息。

eg. 关于XPath选择器语法请看文章: https://blog.youkuaiyun.com/Simon_LHM/article/details/115278997
# selenium方法
details = browser.find_element_by_xpath('//*[@id="info"]').text
- 方法二 CSS选择器
我们知道HTML页面中的元素就是通过CSS选择器进行控制的,因此利用CSS选择器来选取元素进行爬取也是一种比较好的方法。
eg.关于CSS选择器语法请参考:https://www.w3school.com.cn/cssref/css_selectors.asp
# selenium方法
details = browser.find_element_by_css_selector('//*[@id="info"]').text
待续...........