如何正确使用requests 获得所需资料?

大家好,小弟目前需要使用requests获取以下网站的资料:
forumd.hkgolden.com/view.aspx?type...
图中红色框的内容小弟目前需要获取的资料:
讨论区资料
因此我需要使用以下代码获取相关的资料,目前只针对html code的部分处理:

import requests
from lxml import etree
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'}
URL = 'https://forumd.hkgolden.com/view.aspx?type=CA&message=7168706&sensormode=N'
res = requests.get(URL)
#content可以正常输出整个html代码
content = res.content.decode()
# 使用etree.HTML()載入html
html = etree.HTML(content)
content = html.xpath('//*[@id]/td[2]/table/tbody/tr[1]/td/div') #在图中的红色框框HTML Code 的XPATH
#/html/body/form/div[5]/div/div/div[2]/div[1]/div[5]/table/tbody/tr/td/table/tbody/tr/td[2]/table/tbody/tr[1]/td/div #在图中的红色框框HTML Code 的FULL XPATH
print(content)

以上代码是参考以下网站,并根据我自己需要获取的网站查看规则,得到以上的xpath修正:
medium.com/%E9%B3%A5-crl/python%E9...
但是很不幸,目前我遇到一个难题,我在其他网站使用同一方法是可以正常得到网站的相关资料,但是不知道为何我需要获取的网站只有输出以下结果,使用XPATH 和FULL XPATH也一样:
只有显示 []
错误结果
除了参考网址的方法,我也使用过其他方法,但结果还是一样只显示 []
我完全不知道问题到底发生在哪里,希望大家可以帮帮我,谢谢。

Jason990420
最佳答案
import html as HTML

for element in content:
    text = HTML.unescape(etree.tostring(content[0], pretty_print=True).decode())
    print(text+'\n')
<div class="ContentGrid">
<img data-icons=":o)" src="/faces/clown.gif" alt=":o)"/> 你咁講,依家中招隔離果班都係假啦
<br/><br/><br/>
</div>
1个月前 评论
fd5556 (楼主) 1个月前
讨论数量: 5

根据你说讲的方式,我查过按F12的代码和检视网页原始码,所出来的东西确实有少许不一样,但不知道要怎么改才行

F12代码

<div class="ContentGrid">
<img data-icons=":o)" src="/faces/clown.gif" alt=":o)"> 你咁講,依家中招隔離果班都係假啦
<br><br><br>
</div>

检视网页原始码

<div class="ContentGrid">
<img data-icons=":o)" src="/faces/clown.gif" alt=":o)" /> 你咁講,依家中招隔離果班都係假啦
<br /><br /><br />
</div>
1个月前 评论

另外,我有特别参考你提供的,其他人所给的方法:

content = html.xpath('//div[@class="ContentGrid"]')

但所得出来的结果比较奇怪。都长这个样子,问题会在哪里...?:

[<Element div at 0x2a782b810c8>, <Element div at 0x2a7826431c8>, <Element div at 0x2a78266ff48>, <Element div at 0x2a782b78cc8>, <Element div at 0x2a782b78d48>, <Element div at 0x2a782b78c48>, <Element div at 0x2a782b78bc8>, <Element div at 0x2a782b78b88>, <Element div at 0x2a782b86f48>, <Element div at 0x2a782b78c88>, <Element div at 0x2a782b86e88>, <Element div at 0x2a782b8e388>, <Element div at 0x2a782b8e2c8>, <Element div at 0x2a782b8e3c8>, <Element div at 0x2a782b8e448>, <Element div at 0x2a782b8e688>, <Element div at 0x2a782b8e0c8>, <Element div at 0x2a782b8e8c8>, <Element div at 0x2a782b8efc8>, <Element div at 0x2a7826b94c8>, <Element div at 0x2a782bb0948>, <Element div at 0x2a782bb0b48>, <Element div at 0x2a782bb0988>, <Element div at 0x2a782bb0908>, <Element div at 0x2a782bb0ac8>, <Element div at 0x2a782bb0648>]
1个月前 评论
Jason990420 1个月前
fd5556 (作者) (楼主) 1个月前
Jason990420

我没法看到两个 HTML 码的差异, 如果原HTML可以得到你的数据, 就改一下XPATH的路径, 有可能两者的路径是不一样的, 因为 javascript 可能会插入一些HTML 代码, 而不是只有你看的那一行.

1个月前 评论
Jason990420
import html as HTML

for element in content:
    text = HTML.unescape(etree.tostring(content[0], pretty_print=True).decode())
    print(text+'\n')
<div class="ContentGrid">
<img data-icons=":o)" src="/faces/clown.gif" alt=":o)"/> 你咁講,依家中招隔離果班都係假啦
<br/><br/><br/>
</div>
1个月前 评论
fd5556 (楼主) 1个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!