python取网站内容,但输出文件里是空白

熊弟们,为啥我采集到的数据是空的,哪位好熊弟帮忙改改
测试的时候显示正常,没有报错

img

但是输出文件里却是空的

img

代码如下,大姥姥们帮改一下,百度,bilibili都不能解决问题


import requests
from lxml import etree

url = "https://www.ruiwen.com/meiwensuibi/1047794.html"

response = requests.get(url)
print(type(response))
html = etree.HTML(response.content)
print(html)
data = html.xpath("//diy[@class = 'main']/ul/li/a/text()")
#//DIY是获取页面下的所有diy
with open("articllist.txt", "w+", encoding="gb2312") as flie:
    for item in data:
        print(item)
        flie.write(item + "\n")

确定是DIY,不是div吗

【以下回答由 GPT 生成】

问题可能出在以下几个方面:

  1. requests库的导入和使用
  2. XPath表达式的编写
  3. 文件编码的问题

下面是可能优化的解决方案:

import requests
from lxml import etree

url = "https://www.ruiwen.com/meiwensuibi/1047794.html"

# 发起网络请求并设置编码类型为utf-8
response = requests.get(url)
response.encoding = 'utf-8'

# 检查请求是否成功
if response.status_code == 200:
    print("请求成功")
    # 创建HTML解析器对象
    html = etree.HTML(response.text)

    # 使用正确的XPath表达式提取目标数据
    data = html.xpath("//div[@class='main']//ul//li//a/text()") 

    # 使用utf-8编码打开文件,并写入数据
    with open("articllist.txt", "w", encoding='utf-8') as file:
        for item in data:
            print(item)
            file.write(item + "\n")
else:
    print("请求失败")

解决方案的改进点:

  1. response.text:根据网页源代码的编码类型,将返回的response内容转化为文本。
  2. 修改XPath表达式:将diy改为div,并修改其内部的“/”为“//”,以确保可以正确匹配目标数据。
  3. 使用utf-8编码打开文件:确认文件编码与网页源代码的编码一致。


【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^