错误信息为list index out of range,但不知道哪里错了
import requests
from lxml import etree
if __name__ == '__main__':
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'
}
#爬取到页面源码数据
url='https://newhouse.fang.com/house/s/'
page_text=requests.get(url=url,headers=headers).text
#数据解析
tree=etree.HTML(page_text)#注意不可以再用parse了,因为我们需要的是网页上的数据,而不是本地数据
#存储的就是li标签对象
li_list=tree.xpath('//ul/li')
fp=open('58.txt','w',encoding='utf-8')
for li in li_list:
title=li.xpath('./div/div[2]/div[1]/div/a/text()')[0]
print(title)
fp.write(title+'\n')
根据您提供的代码和报错信息,问题出现在 title=li.xpath('./div/div[2]/div[1]/div/a/text()')[0]
这一行,数组越界了。这可能是由于某些 li
标签没有找到对应的标题导致的。为了解决这个问题,您可以在获取标题之前,先判断一下是否有标题存在,例如:
title_list = li.xpath('./div/div[2]/div[1]/div/a/text()')
if title_list:
title = title_list[0]
print(title)
fp.write(title+'\n')
else:
print('No title found.')
这样,如果某个 li
标签没有找到对应的标题,就会打印出 No title found.
的提示信息,而不会导致数组越界错误。
参考GPT和自己的思路:根据您提供的代码和错误信息,可能是xpath表达式出现错误导致的。请检查一下以下两行代码中的xpath表达式是否正确:
li_list=tree.xpath('//ul/li')
title=li.xpath('./div/div[2]/div[1]/div/a/text()')[0]
```
import requests
import re
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'
}
url='https://newhouse.fang.com/house/s/'
page_text=requests.get(url=url,headers=headers).text
pattern='