【问题标题】:Google Scraping href values谷歌抓取href值
【发布时间】:2018-06-20 21:23:43
【问题描述】:

我在 BeautifulSoup` 中查找 href 值有问题

from urllib import urlopen
from bs4 import BeautifulSoup
import re
html = urlopen("https://www.google.pl/search?q=sprz%C4%99t+dla+graczy&client=ubuntu&ei=4ypXWsi_BcLZwQKGroW4Bg&start=0&sa=N&biw=741&bih=624")
bsObj = BeautifulSoup(html)
for link in bsObj.find("h3", {"class":"r"}).findAll("a"):
  if 'href' in link.attrs:
    print(link.attrs['href'])

我总是有错误:

"AttributeError: 'NoneType' 对象没有属性 'findAll'

【问题讨论】:

  • 谢谢,但它唯一的问题是在堆栈中粘贴代码:) 在脚本中它没问题
  • 好的,让我看看

标签: python python-2.7 web-scraping beautifulsoup


【解决方案1】:

您必须将 User-Agent 字符串更改为 urllib 的默认用户代理以外的其他内容。

from urllib2 import urlopen, Request
from bs4 import BeautifulSoup

url = "https://www.google.pl/search?q=sprz%C4%99t+dla+graczy&client=ubuntu&ei=4ypXWsi_BcLZwQKGroW4Bg&start=0&sa=N&biw=741&bih=624"
html = urlopen(Request(url, headers={'User-Agent':'Mozilla/5'})).read()
bsObj = BeautifulSoup(html, 'html.parser')

for link in bsObj.find("h3", {"class":"r"}).findAll("a", href=True):
    print(link['href'])

另请注意,此表达式将仅选择第一个链接。如果要选择页面中的所有链接,请使用以下表达式:

links = bsObj.select("h3.r a[href]")
for link in links:
    print(link['href'])

【讨论】:

  • 我想我已经能够想出另一个令人不安的帖子@t.m.adam。如果你看看 this post,我会很高兴
猜你喜欢
  • 2016-03-06
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-28
  • 1970-01-01
相关资源
最近更新 更多