关于爬虫参数属性不对,无法继续爬取的问题!

刚学爬虫没多久,在学习的道路上遇到点问题:用xpath爬取时,由于是间接爬取,使得第一步爬取的网址的属性为列表(part_link),转换为字符串(part_link_s)后,准备继续爬取具体内容,但总是提示说参数(link)不对,求解答

res=requests.get(url,headers=headers)
selector=etree.HTML(res.text)
url_infos=selector.xpath('//div[@class="book-list"]/ul/li')
for url_info in url_infos:
    part_link=url_info.xpath('div[2]/a/@href')
    part_link_s=str(part_link)
    link='http:'+part_link_s
    res1=requests.get(link,headers=headers)
    selector=etree.HTML(res1.text)
    infos=selector.xpath('//div[@class="book-intro"]/p')
    for info in infos:
        f_link=info.xpath('div[1]/p')
        print(len(f_link))


运行后显示:
raise InvalidURL("Invalid URL %r: No host supplied" % url)
requests.exceptions.InvalidURL: Invalid URL 'http:[]': No host supplied

求告知如何解决

url_info.xpath('div[2]/a/@href')返回的列表,要part_link[0]获取列表的第一个元素

part_link_s=str(part_link[0])

而且你 url_info.xpath('div[2]/a/@href')好像没有获取成功,返回的是一个空列表[]
你检查下xpath是否写正确, 路径前面要加./
part_link=url_info.xpath('./div[2]/a/@href')

res=requests.get(url,headers=headers)
selector=etree.HTML(res.text)
url_infos=selector.xpath('//div[@class="book-list"]/ul/li')
for url_info in url_infos:
    part_link=url_info.xpath('./div[2]/a/@href')  #路径前面要加./
    part_link_s=str(part_link[0])  #加[0]
    link='http:'+part_link_s
    res1=requests.get(link,headers=headers)
    selector=etree.HTML(res1.text)
    infos=selector.xpath('//div[@class="book-intro"]/p')
    for info in infos:
        f_link=info.xpath('./div[1]/p')  #路径前面要加./
        print(len(f_link))
 
 


如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632