【问题标题】:Python Web Scrape IndexPython网络爬虫索引
【发布时间】:2015-01-15 11:43:29
【问题描述】:

我对任何形式的网络抓取都非常陌生,我一直在尝试接触 Python,并且听说网络抓取是让自己接触 Python 的好方法。因此,经过多次 Google 搜索后,我最终归结为使用两个强烈推荐的模块:Requests 和 BeautifulSoup。我已经阅读了相当多的内容,并对如何使用它们有了基本的了解。

我找到了一个非常基本的网站(基本没有太多的内容或 javascript 之类的东西,使得解析 HTML 更容易),我有以下代码:

import requests
from bs4 import BeautifulSoup

soup = BeautifulSoup(requests.get('http://www.basicwebs.co.uk/contact.htm').text)

for row in soup('div',{'id': 'Layer1'})[0].h2('font'):
    tds = row.text
    print tds

此代码有效。它产生以下结果:

BASIC
    WEBS
Contact details
Contact details

如果您花几分钟检查此页面上的代码,这是正确的结果(我假设)。现在,问题是,虽然这段代码有效,但如果我想获得页面的不同部分怎么办?就像页面上的小段落一样,“如果您有兴趣拥有一个由我们设计和托管的网站,请通过电子邮件或电话与我们联系。” - 我的理解是简单地将索引号更改为该文本所在的相应标题,但是当我更改它时,我收到一条消息,表明列表索引超出范围。

有人可以帮忙吗? (尽可能简单)

我使用的是 Python 2.7.8

【问题讨论】:

    标签: html parsing python-2.7 beautifulsoup python-requests


    【解决方案1】:

    您需要的文本被属性 size=3 的字体标签包围,因此一种方法是选择它的第一次出现,如下所示:

    font_elements = soup('font', {'size': 3})
    
    if font_elements:
         print font_elements[0].text
    

    结果:

    如果您有兴趣设计一个网站 并由我们托管,请通过电子邮件或电话与我们联系。

    【讨论】:

    • 非常感谢您的回答!生产出我想要的东西
    【解决方案2】:

    你可以直接这样做:

    soup('font',{'size': '3'})[0].text
    

    但是,我想提请您注意您之前犯的错误。

    soup('div',{'id': 'Layer1'})
    

    这会返回 id='Layer1' 的 div 标签,它可以是多个。因此,它基本上返回所有 div 标签具有 id='Layer1' 的 HTML 元素的列表,但不幸的是,您尝试解析的 HTML 有一个这样的元素。所以它越界了。

    您可能可以使用一些 Python 的交互式解释器,例如 bpython 或 ipython 来测试您在对象中得到了什么。?黑客快乐!!!

    【讨论】:

    • 感谢您的建议!
    【解决方案3】:
    from urllib.request import urlopen
    from bs4 import BeautifulSoup
    
    web_address=' http://www.basicwebs.co.uk/contact.htm'
    html = urlopen(web_address)
    bs = BeautifulSoup(html.read(), 'html.parser')
    
    contact_info = bs.findAll('h2', {'align':'left'})[0]
    for info in contact_info:
        print(info.get_text())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多