【问题标题】:Python Web Crawlers and "getting" html source codePython 网络爬虫和“获取”html 源代码
【发布时间】:2010-08-20 17:54:42
【问题描述】:

所以我的兄弟希望我用 Python(自学)编写一个网络爬虫,我知道 C++、Java 和一点 html。我正在使用 2.7 版并阅读 python 库,但我有一些问题 1. httplib.HTTPConnectionrequest 概念对我来说是新概念,我不明白它是下载 cookie 之类的 html 脚本还是实例。如果你同时做这两件事,你会得到网站页面的来源吗?修改页面并返回修改后的页面需要知道哪些单词。

仅作为背景,我需要下载一个页面并将所有 img 替换为我拥有的页面

如果你们能告诉我你对 2.7 和 3.1 的看法,那就太好了

【问题讨论】:

  • 您使用的是哪个 Python 模块或库?你说的get是什么?
  • @David - 我修正了我的规格

标签: python get web-crawler


【解决方案1】:

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

我推荐你使用 stdlib 模块urllib2,它可以让你轻松地获取网络资源。 示例:

import urllib2

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

要解析代码,请查看BeautifulSoup

顺便说一句:你到底想做什么:

仅作为背景,我需要下载一个页面并将所有 img 替换为我拥有的页面

编辑:现在是 2014 年,大部分重要的库都已被移植,如果可以的话,你绝对应该使用 Python 3。 python-requests 是一个非常不错的高级库,比urllib2 更易于使用。

【讨论】:

  • 只是吹毛求疵,你从urlopen 得到的不是request 对象,而是一个响应对象。
  • 如果您看到谷歌徽标,请替换为麦当劳徽标。或者如果你去谷歌图片,你只会看到一张你选择的特定图片
  • Python 3.4,安装请求:pip install requests
【解决方案2】:

@leoluk 提到的python3requests 库的示例:

pip install requests

脚本 req.py:

import requests

url='http://localhost'

# in case you need a session
cd = { 'sessionid': '123..'}

r = requests.get(url, cookies=cd)
# or without a session: r = requests.get(url)
r.content

现在,执行它,你将得到localhost的html源代码!

python3 req.py

【讨论】:

    【解决方案3】:

    如果你使用Python > 3.x你不需要安装任何库,这是直接内置在python框架中的。旧的urllib2 包已重命名为urllib

    from urllib import request
    
    response = request.urlopen("https://www.google.com")
    # set the correct charset below
    page_source = response.read().decode('utf-8')
    print(page_source)
    

    【讨论】:

      【解决方案4】:

      您需要做的第一件事是阅读HTTP spec,它将解释您可以通过网络接收到什么。内容内返回的数据将是“渲染”的网页,而不是源。源代码可以是 JSP、servlet、CGI 脚本,简而言之,几乎可以是任何东西,而您无权访问它们。您只会获得服务器发送给您的 HTML。在静态 HTML 页面的情况下,是的,您将看到“源”。但是对于其他任何内容,您会看到生成的 HTML,而不是源代码。

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

      【讨论】:

      • 对某个页面的所有img文件,替换为新的
      • 你发给我的链接很大。我应该阅读的最低限度是什么
      • Google 搜索有关 HTTP 的信息。这是将 HTML 从服务器传送到浏览器的底层协议。我假设您已经了解 HTML 并且有解析它的策略。如果没有,所有部分都可用,但您需要进行一些研究和学习才能将它们组合在一起。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多