python爬虫初阶问题

import requests
from lxml import etree
with open(" 豆瓣音乐top.txt", "a", encoding="utf-8") as f:
    for i in range(10):
        url = "https://music.douban.com/top250?start={}".format(i * 25)
        headers = {"User_Agent": "Mozilla/5.0(compatible; MSIE 5.5; Windows 10)"}
        data = requests.get(url, headers=headers).text
        s = etree.HTML(data)
        musics = s.xpath('//*[@id="content"]/div/div[0]/div/table')

        for music in musics:
            music_name = music.xpath('./tr/td[2]/div/a/text()')[0].strip()
            music_author = music.xpath('./tr/td[2]/div/p[1]/text()')[0].strip()
            f.write("歌名:{}\n".format(music_name))
            f.write("作者:{}\n".format(music_author))
            f.write("\n")

运行报错
AttributeError: 'NoneType' object has no attribute 'xpath'
怎么解决

你的问题有两个,
一是headers中"User-Agent"里的“-”减号写成 “_”下划线,
二是 musics = s.('//*[@id="content"]/div/div[0]/div/table')中div[0]要改成div[1]

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

import requests
from lxml import etree
with open(" 豆瓣音乐top.txt", "a", encoding="utf-8") as f:
    for i in range(10):
        url = "https://music.douban.com/top250?start={}".format(i * 25)
        headers = {"User-Agent": "Mozilla/5.0(compatible; MSIE 5.5; Windows 10)"}
        data = requests.get(url, headers=headers).text
        s = etree.HTML(data)
        musics = s.xpath('//*[@id="content"]/div/div[1]/div/table')
        for music in musics:
            music_name = music.xpath('./tr/td[2]/div/a/text()')[0].strip()
            music_author = music.xpath('./tr/td[2]/div/p[1]/text()')[0].strip()
            f.write("歌名:{}\n".format(music_name))
            f.write("作者:{}\n".format(music_author))
            f.write("\n")
            print(music_name,music_author)

img

get请求里面可能有headers反扒,你的user-agent可能错了,建议直接复制粘贴,另外你可以看看这个网站
https://www.cnblogs.com/itworkers/p/13469527.html