最近在优化爬虫过程中的出现了IndexError: list index out of range。
看图,这是什么原因呢?
先print下you数组的长度。
结果不出所料,当传入数组为空或者超出时就会出现这种问题。我这里给了两种解决方案,第一种直接将有空白的地方删除。
接下来就要用到比bs4更方便的pyquery,这是一个类似于jquery库的python库。
from pyquery import PyQuery as pq
经过检查是因为有些房产信息没给建造年限,然后修改代码。
#获取房子信息
doc=pq(html.text)
#取奇数元素
jli=doc('.details-item:nth-child(2n-1) span')
#取偶数元素
oli=doc('.details-item:nth-child(2n) span:lt(3)')
#直接分割
myroom=jli.text().split(' ')
mylocal=oli.text().split(' ')
print(mylocal)
you=[]
i=0
while i <len(myroom):
you.append(re.sub(r'\s', "",myroom[i]))
i=i+1
print(you)
mylocaldetail=[]
myroomlocal=[]
m=0
k=0
while k <60:
myroomlocal.append([you[k*2],you[k*2+1]])
k=k+1
while m <60:
mylocaldetail.append([mylocal[m*3],mylocal[m*3+1],mylocal[m*3+2]])
m=m+1
完整的优化代码,这里将cityname做为数据库和搜索城市变量。
import requests
import re
import pymysql
from pyquery import PyQuery as pq
page=1
print('请输入你要获取的城市')
cityname= input()
while (page < 11 & len(cityname)!=0):
print ("这是第"+str(page) +"页")
if page==1:
url='https://%s.anjuke.com/sale/#'%cityname
headers={
'referer': 'https://%s.anjuke.com/sale/#'%cityname,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
}
else:
url='https://%s.anjuke.com/sale/p%d/#filtersort'%(cityname,page