使用python搜索网站返回[]

使用python搜索网站返回[],python,web-scraping,beautifulsoup,python-requests,lxml,Python,Web Scraping,Beautifulsoup,Python Requests,Lxml,我正在尝试为以下URL构建一个简单的scrape: 我想做的是通过以下方式为地图上列出的所有项目建立一个电子表格: 项目名称 项目媒体(图像链接很好) 项目说明 我尝试了以下代码,但即使我专门查找一个值,我也不返回任何数据(AKA[]): from lxml import html import requests page = requests.get('http://www.bizjournals.com/milwaukee/datacenter/project-watch-what-i

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

我想做的是通过以下方式为地图上列出的所有项目建立一个电子表格:

  • 项目名称
  • 项目媒体(图像链接很好)
  • 项目说明
我尝试了以下代码,但即使我专门查找一个值,我也不返回任何数据(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位值)


有什么建议吗?

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

关键的一课——当你没有得到你想要的东西时,检查一下你得到了什么

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

>>>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">
导入请求 >>>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)#这里我只是想确保,如果page_内容过大,我不会导致IDLE冻结 4319#因此内容的字符串是4319个字符,我将打印200个字符(其余字符如下) >>>打印页面内容[0:200] 请原谅我们的打扰 我一直在检查源代码,试图找出地图上的值来自何处。我认为数据是JSON,但似乎仍然无法确定如何调用这些数据并将其传递到浏览器。我认为您必须定义一些要随请求一起发送的标题

我试过一些,但还没有成功

看到这个问题了吗

然而,我确实读过他们的使用规则,他们禁止刮取内容。请参阅此链接。

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

我想我已经找到了获取数据的方法,但在阅读了上面的链接后,我停止了


'\n\n\n\n\n\n\n\n\n\n请原谅我们的打扰\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n请原谅我们的打扰…\n\n当您浏览时,您的浏览器有些东西让我们觉得您是一个机器人。出现这种情况的原因有很多:\n

\n
    \n
  • 您是一个超级用户,以超人的速度浏览此网站。
  • \n
  • 您在web浏览器中禁用了JavaScript。
  • \n
  • 第三方浏览器插件,如Ghostery或NoScript,正在阻止JavaScript运行。本节提供了更多信息http://ds.tl/help-third-party-plugins\“target=\\\\\\\'>支持文章。
  • \n
\n\n要请求取消阻止,请填写下表,我们将尽快审核。\n

\n\n忽略:忽略:忽略:忽略:\n\n名字\n如上所述,他们显然禁止在TOS中删除。但是如果你向他们询问你的用例等,他们可能会很高兴


出于学术兴趣-所有地图数据均来自。您可以在chrome developer tools>network>xhr中看到它加载了一个json响应,带有弹出框内容和映射点

您是否尝试检查page.content?把它打印出来,看看这些项目是否存在。我有。所有的项目都在那里,所以看起来应该是可能的。然而,根据PyNEwbie下面的回答,似乎刮取是违反他们的TOS的。解决4位数ID更改问题的另一种方法是下载文件并从本地副本中提取数据。@SweetBurlap谢谢!这很有道理!好了,你来了!对于python(以及CSS/HTML以外的任何东西),我都是新手,所以我不知道自己在做什么。非常感谢您的关注!谢谢这很有帮助!