2010-08-20 35 views
13

所以我的兄弟想让我用Python编写一个网络爬虫(自学),我知道C++,Java和一些html。我使用2.7版本和阅读python库,但我有一些问题 1. httplib.HTTPConnectionrequest概念给我是新的,我不明白它是否下载像cookie或实例的html脚本。如果你同时做这两件事,你会得到一个网站页面的来源吗?以及我需要知道的修改页面并返回修改页面的词汇是什么。Python网络爬虫和“获取”html源代码

只为背景,我需要下载一个网页,并与那些我有

更换任何IMG那将是很好,如果你们能告诉我你的2.7和3.1

+0

您正在使用哪个Python模块或库?你说的是什么? – 2010-08-20 18:06:32

+0

@David - 我修正了我的规格 – danutenshu 2010-08-20 18:10:03

回答

37

使用Python 2.7,目前有更多的第三方库。编辑:见下文)。

我推荐你使用stdlib模块urllib2,它会让你轻松获得网络资源。 实施例:

import urllib2 

response = urllib2.urlopen("http://google.de") 
page_source = response.read() 

对于解析代码,看一下BeautifulSoup

BTW:究竟你想做的事:

只为背景,我需要下载一个网页,并与那些更换任何IMG我

编辑:这2014现在,大多数重要的图书馆已经被移植了,如果可以的话,你一定要使用Python 3。 python-requests是一个非常好的高级库,比urllib2更容易使用。

+0

只是挑剔的,你从'urlopen'返回的东西不是'request'对象,它是一个响应对象。 – aaronasterling 2010-08-20 18:18:06

+0

糟糕。谢谢。 – leoluk 2010-08-20 18:21:05

+0

就像你看到一个谷歌标志,用麦当劳标志取代。或者如果你去谷歌的图像,你什么也看不到,但只有一个你选择的图像 – danutenshu 2010-08-20 19:07:07

0

的第一件事情意见你需要做的是阅读HTTP spec这将解释你可以期望通过电线接收。在内容中返回的数据将是“呈现”网页,而不是来源。源代码可能是一个JSP,一个servlet,一个CGI脚本,简而言之就是任何东西,而且你无法访问它。您只能获得服务器发送给您的HTML。在静态HTML页面的情况下,是的,你会看到“源”。但对于其他任何你看到的是生成的HTML,而不是源代码。

当你说modify the page and return the modified page你是什么意思?

+0

对于某个页面上的所有img文件,取而代之的是一个新的 – danutenshu 2010-08-20 18:59:52

+0

就像你看到一个google logo,用Mcdonalds logo替换 – danutenshu 2010-08-20 19:06:18

+0

你发给我的链接非常大。我应该阅读的最低要求是什么 – danutenshu 2010-08-20 19:25:35