Python爬虫爬取必应图片的一个环节,使用xpath获取下载图片的URL时,获取内容为空,检查过xpath语法正确,坐等解决方法
import requests
from lxml import etree
url = 'https://cn.bing.com/images/search?view=detailV2&ccid=lH2TkHTF&id=65167C9E54BD6A516682173F7A4747E63FA4D77E&thid' \
'=OIP.lH2TkHTFHjovR0wqZFDVoAHaEK&mediaurl=https%3a%2f%2fts1.cn.mm.bing.net%2fth%2fid%2fR-C' \
'.947d939074c51e3a2f474c2a6450d5a0%3frik%3dftekP%252bZHR3o%252fFw%26riu%3dhttp%253a%252f%252fimg3.donews.com' \
'%252fuploads%252fimg3%252fimg_pic_1530694840_0%26ehk%3dTqmFU1WejMz%252frQawSVbV7db9KDdl%252fUw5L2HWmPQHqPQ' \
'%253d%26risl%3d%26pid%3dImgRaw%26r%3d0&exph=1080&expw=1920&q=%e6%95%85%e5%ae%ab&simid=608051165034519383&FORM' \
'=IRPRST&ck=06B53B135EB364C0A5765DF5E81F6BF7&selectedIndex=33&qft=+filterui%3aimagesize-custom_1920_1080&vt=0' \
'&sim=11 '
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188 '
}
res = requests.get(url=url, headers=headers)
page = res.text
ele = etree.HTML(page)
new_url = ele.xpath('//div[@class="imgContainer"]/img/@src')
print(new_url)
【以下回答由 GPT 生成】
首先,我们需要检查爬虫是否能够成功获取到网页的内容。可以使用requests
库发送GET请求来获取网页内容。
import requests
response = requests.get(url)
print(response.status_code)
print(response.text)
如果输出的status_code
为200,并且text
显示了网页的内容,说明爬虫可以成功获取到必应图片网页的内容。如果输出的status_code
不是200,则可能是网络连接问题,可以检查网络连接或者尝试使用代理。
接下来,我们需要确认XPath表达式是否正确。可以使用lxml
库来解析网页内容,并使用XPath表达式提取需要的链接。
from lxml import etree
html = etree.HTML(response.text)
urls = html.xpath('YOUR_XPATH_EXPRESSION')
print(urls)
在这里,你需要将YOUR_XPATH_EXPRESSION
替换为正确的XPath表达式。如果urls
的结果为空列表,可能是XPath表达式错误,你可以再次检查并确保XPath表达式确实能够提取到链接。
最后,如果以上步骤都没有问题,但仍然无法获取到链接,有可能是图片链接是动态加载的。这种情况下,你需要分析网页的网络请求,找到加载图片链接的请求,并模拟发送该请求获取到图片链接。
希望以上解决方案能够帮助你解决问题,如果还有其他疑问,请随时提问!
【相关推荐】