我正在使用urllib库来获取页面。通常我有顶级域名&我希望从该域内的每个页面中提取一些信息。因此,如果我有xyz.com,我希望我的代码从xyz.com/about等处获取数据。这就是我正在使用的内容:
import urllib,re
htmlFile = urllib.urlopen("http://www.xyz.com/"+r"(.*)")
html = htmlFile.read()
...............
尽管如此,这对我来说并不起作用。任何想法都表示赞赏。
感谢。 -T
答案 0 :(得分:3)
我不知道为什么你会期望domain.com/(.*)
能够发挥作用。您需要拥有该域中所有页面(动态或静态)的列表。你的python程序不能自动知道。您必须通过以下链接或查看网站的站点地图,从其他地方获得这些知识。
作为一个脚注,刮刮是一个有点阴暗的事情。无论您采用何种方法,始终要确保您没有违反任何条款和条件。
答案 1 :(得分:1)
您正在尝试在Web服务器上使用正则表达式。事实证明,Web服务器实际上并不支持这种格式,所以它失败了。
要做你想做的事,你需要实现一个蜘蛛。一个程序,它将下载页面,查找其中的所有链接,并决定要遵循哪些链接。然后,下载每个页面,并重复。
需要注意的一些事项 - 循环,最终指向同一页面的多个链接,超出域名的链接,以及被网络服务器禁止通过1000次请求向其发送垃圾邮件。
答案 2 :(得分:0)
Scrapy内置了此功能。无法递归获取链接。它异步自动处理所有繁重的工作。只需指定您的域名和搜索字词,以及您希望它在页面中搜索的深度。整个网站。 http://doc.scrapy.org/en/latest/index.html
答案 3 :(得分:0)
除了@zigdon回答,我建议你看一下scrapy框架。
CrawlSpider可以帮助您轻松实现抓取。