2018-06-25 調(diào)試爬蟲代碼
import requests ##導(dǎo)入requests
from bs4 import BeautifulSoup ##導(dǎo)入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"} ##瀏覽器請(qǐng)求頭(大部分網(wǎng)站沒有這個(gè)請(qǐng)求頭會(huì)報(bào)錯(cuò)、請(qǐng)務(wù)必加上哦)
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))
幫助調(diào)試這段爬蟲代碼報(bào)錯(cuò)問題

錯(cuò)誤.png
這里的問題是對(duì)鏈接列表all_a的第一個(gè)a請(qǐng)求會(huì)返回一個(gè)NoneType
安裝需要的庫
pip3 install beautifulsoup4
pip3 install lxml
然后開始debug
- 最初認(rèn)為是該url對(duì)應(yīng)的頁面不包含‘maincontent’,但是在瀏覽器中打開該URL用開發(fā)者工具檢查發(fā)現(xiàn)并不是。
- 同時(shí),很快發(fā)現(xiàn)第一次請(qǐng)求的url和第二次請(qǐng)求的url是相同的!但第一次返回為NoneType,第二次返回正常。
- 有切片截取all_a列表中其他部分然后開始爬取(
for a in all_a[3:7]:),錯(cuò)誤依舊。
此時(shí),判斷可能是頁面需要先作一個(gè)Cache,或者是這個(gè)一個(gè)ajax異步請(qǐng)求,先返回了不包含目標(biāo)內(nèi)容的response
暫時(shí)未解決