【问题标题】:web crawler using python使用 python 的网络爬虫
【发布时间】:2015-01-19 05:08:40
【问题描述】:

我的问题是如何从所需信息与唯一属性无关的 HTML 代码中提取信息,例如:

1.从<a href="http://www.spoj.com/problems/TEST/" style="visibility: visible;">提取问题链接

如果我们想使用http://www.spoj.com/problems/***访问所有问题的链接

2.从<span id="ChangePercent">-0.88%</span>提取股价变化(-0.88)

我使用 beautifulSoup 的 findAll() 制作了一个简单的网络爬虫,它显示了提交所有问题解决方案的链接。 我希望它显示 spoj 上所有问题的链接,因此需要在 HTML 代码中为 findAll() 提供问题链接的唯一属性(检查问题链接中的元素)。

我试过了:

url = 'http://www.spoj.com/problems/classical/sort=0,start=' + str(page)
source_code = requests.get(url)
soup = BeautifulSoup(source_code.text)
# print(soup)

for link in soup.findAll('a', {'href':'http://www.spoj.com/problems/' + '.+.'}):
    href = link.get('href')
    print(str(href))
  • (句点)——匹配除换行符'\n'以外的任何单个字符
    • -- 左侧出现 1 次或多次模式,例如'i+' = 一个或多个 i's

我知道错误在 '.+.' 中部分,需要帮助以找到解决方案..

我的python代码打印链接提交链接:http://ideone.com/4ZLcSV

【问题讨论】:

    标签: python html beautifulsoup


    【解决方案1】:

    使用回复:

    import re
    rr = re.findall(r'href="(/problems/[^"]+).*?problem\.">([0-9\.^<]+)', \
    source_code.text, re.DOTALL|re.MULTILINE)
    for url, p in rr:
        print url, p
    

    将打印如下内容: /problems/classical/ 25.03 /problems/DYZIO/ 30.75 /problems/SUPPER/ 30.49 /problems/PICAD/ 14.25

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      相关资源
      最近更新 更多