使用Python网站爬取返回[]

2024-07-03 06:22:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为以下URL构建一个简单的scrape:

http://www.bizjournals.com/milwaukee/datacenter/project-watch-what-is-being-built-in-milwaukee.html

我要做的是建立一个电子表格,列出地图上列出的所有项目:

  • 项目名称
  • 项目媒体(图像链接很好)
  • 项目说明

我尝试了以下代码,但我一直没有返回任何数据(AKA[]),即使我专门寻找一个值:

from lxml import html
import requests
page = requests.get('http://www.bizjournals.com/milwaukee/datacenter/project-watch-what-is-being-built-in-milwaukee.html')
tree = html.fromstring(page.content)
#This will create a list of project titles:
project = tree.xpath('//*[@id="m4n-0552-popup-1"]/div[2]/b')
print('Projects:', project)

我猜问题是每次我加载页面时,ID都会发生变化(即0552更改为不同的4位数值)。在

有什么建议吗?在


Tags: 项目inprojectcomhttpishtmlwww
2条回答

他们认为你是一个机器人,不允许你提取内容

这里的关键一课-当你没有得到你期望的,检查你得到了什么。在

为了得到下面的文字,我只是把内容打印出来。在

>>>import requests
>>>page = requests.get('http://www.bizjournals.com/milwaukee/datacenter/project-watch-what-is-being-built-in-milwaukee.html')
page_content = requests.content
>>>len(page_content) # here I am just trying to make sure I am not going to cause IDLE to freeze if page_content is unreasonably large
4319  # so the string that is the content is 4319 characters I am going to print 200 characters  (the rest is below)
>>>print page_content[0:200]
<!DOCTYPE html>
<html>






<head>
<title>Pardon Our Interruption</title>
<link rel="stylesheet" type="text/css"    href="//cdn.distilnetworks.com/css/distil.css" media="all">

我一直在检查数据源,试图弄清楚地图上的值是从哪里来的。我认为数据是JSON,但似乎仍然无法识别这些数据是如何被调用和传递到浏览器的。我想你需要定义一些头来发送你的请求。在

我试过几次,但还没有成功。在

看这个问题How to use Python requests to fake a browser visit?

不过,我确实读过他们的使用规则,而且他们禁止刮取他们的内容。请参阅此链接http://acbj.com/privacy#V2

复制、获取、抓取、索引、刮取、蜘蛛、挖掘、收集、提取、编译、获取、聚合、捕获或存储任何内容,包括但不限于照片、图像、文本、音乐、音频、视频、播客、数据、软件、源代码或目标代码、算法、统计数据、分析、公式、索引、注册表、存储库,或服务上或通过服务获得的任何其他信息,包括通过自动或手动流程或其他方式获得的信息,前提是我们已采取措施禁止、禁止或阻止您这样做;

我想我正在寻找一种获取数据的方法,但在阅读了上面的链接后就停止了。在

'\n\n\n\n\n\n\n\n\n请原谅我们的打扰\n\n\n\n\n\n\n\n\n\n\n\n\n\n 0\n\n\n

请原谅我们的打扰…

\n

\n当您浏览http://www.bizjournals.com时,您的浏览器的某些问题使我们认为您是一个机器人。有几个原因可能会发生:\n

\n
    \n
  • 你是一个超级用户,以超人的速度浏览这个网站。
  • \n
  • 您已经在web浏览器中禁用了JavaScript。
  • \n
  • 第三方浏览器插件(如Ghostery或NoScript)正在阻止JavaScript的运行。更多信息请参见http://ds.tl/help-third-party-plugins\'target=\'''u blank\'>;支持文章。
  • \n
\n

\n若要请求解除阻止,请填写下表,我们将尽快审阅。\n

\n\n Ignore:忽略:忽略:忽略:\n\n名字\n

如前所述,他们显然禁止在他们的任务中刮擦。但是如果你问他们关于你的用例等等,你可能会很高兴

出于学术兴趣-所有地图数据都来自https://online.maps4news.com/ia/2.0/?id=351%2FBE9%2FB24870F6A499C237B88CB54F27。您可以在chrome开发工具中看到它加载了>;network>;xhr,其中包含弹出框内容和映射点的json响应

相关问题 更多 >