requests.get(url).content从8a.nu为空白>> [

问题描述 投票:0回答:2
[我试图用Scrapy刮擦攀登网站8a.nu,但在获取html时遇到问题。

我可以从其他网站获取html:

import requests url = 'https://datacamp.com/courses/all' html = requests.get(url).content html

输出:b'<!DOCTYPE html>\n<html class="no-js">\n  <head>\n  <script>\n...'

import requests url = 'https://www.8a.nu/scorecard/ranking/' html = requests.get(url).content html

输出:b''

这是https://www.8a.nu/scorecard/ranking/中的源代码的片段>

<html xmlns="http://www.w3.org/1999/xhtml"> <head id="ctl00_Head1"><meta charset="utf-8" /><meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /><link id="ctl00_cLink" rel="canonical" href="https://www.8a.nu/scorecard/ranking/" /> <title>8a.nu - World Ranking Outdoor Climbing</title> <meta charset="utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <link href="/8aStyle.css" type="text/css" rel="stylesheet" /> <script src="/js/Common.js" type="text/javascript"></script> <style type="text/css">

任何主意是什么原因造成的?我知道某些网站是使用JavaScript生成的,但我仍然希望可以通过请求模块获取HTML源代码。

我正在尝试用Scrapy抓取攀爬网站8a.nu,但在获取html时遇到了问题。我可以从其他网站获取html:导入请求url ='https://datacamp.com / ...

python scrapy
2个回答
0
投票
此问题并非特定于请求模块,甚至不是python。而是,该网站根据请求的用户代理有选择地决定返回什么。您可以通过使用curl来请求站点并手动添加适当的用户代理(标准浏览器的代理)来确认这一点。

请注意,此答案仅供参考。如果网站被用户代理阻止,则他们很可能不希望其网站被剪贴。我建议您先检查他们的服务条款,然后再继续。


0
投票
如果站点使用的是JavaScript库,则必须使用ScrapyJS。如果站点未使用JavaScript呈现,则添加标题可能会有所帮助。
© www.soinside.com 2019 - 2024. All rights reserved.