2018-06-25 调试爬虫代码
import requests ##导入requests
from bs4 import BeautifulSoup ##导入bs4中的BeautifulSoup
import os
headers = {'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"} ##浏览器请求头(大部分网站没有这个请求头会报错、请务必加上哦)
all_url = 'http://www.meizitu.com/'
start_html = requests.get(all_url, headers=headers)
soup = BeautifulSoup(start_html.text, 'lxml')
all_a = soup.find(id='maincontent').find_all('a')
for a in all_a:
title = a.get_text()
href = a['href']
print(title,href)
html = requests.get(href, headers=headers)
html_Soup = BeautifulSoup(html.text, 'html.parser')
max_span = html_Soup.find(id='maincontent')
print(type(max_span))
帮助调试这段爬虫代码报错问题
这里的问题是对链接列表all_a的第一个a请求会返回一个NoneType
安装需要的库
pip3 install beautifulsoup4
pip3 install lxml
然后开始debug
- 最初认为是该url对应的页面不包含‘maincontent’,但是在浏览器中打开该URL用开发者工具检查发现并不是。
- 同时,很快发现第一次请求的url和第二次请求的url是相同的!但第一次返回为NoneType,第二次返回正常。
- 有切片截取all_a列表中其他部分然后开始爬取(
for a in all_a[3:7]:
),错误依旧。
此时,判断可能是页面需要先作一个Cache,或者是这个一个ajax异步请求,先返回了不包含目标内容的response
暂时未解决
网友评论