我正在尝试从Google搜索结果中提取链接。检查元素告诉我,我感兴趣的部分具有“ class = r”。第一个结果如下所示:
<h3 class="r" original_target="https://en.wikipedia.org/wiki/chocolate" style="display: inline-block;">
<a href="https://en.wikipedia.org/wiki/Chocolate"
ping="/url?sa=t&source=web&rct=j&url=https://en.wikipedia.org/wiki/Chocolate&ved=0ahUKEwjW6tTC8LXZAhXDjpQKHSXSClIQFgheMAM"
saprocessedanchor="true">
Chocolate - Wikipedia
</a>
</h3>
要提取“ href”,我要做:
import bs4, requests
res = requests.get('https://www.google.com/search?q=chocolate')
googleSoup = bs4.BeautifulSoup(res.text, "html.parser")
elements= googleSoup.select(".r a")
elements[0].get("href")
但是我意外地得到:
'/url?q=https://en.wikipedia.org/wiki/Chocolate&sa=U&ved=0ahUKEwjHjrmc_7XZAhUME5QKHSOCAW8QFggWMAA&usg=AOvVaw03f1l4EU9fYd'
我想要的地方:
"https://en.wikipedia.org/wiki/Chocolate"
属性“ ping”似乎使它感到困惑。有任何想法吗?
如果您打印响应内容(即googleSoup.text
),则会看到您得到的HTML完全不同。页面源和响应内容不匹配。
因为内容是动态加载的,所以 不会 发生这种情况。即便如此,页面源和响应内容也是相同的。(但是您在检查元素时看到的HTML是不同的。)
对此的基本解释是Google可以识别Python脚本并更改其响应。
您可以传递 假的 User-
Agent,
以使脚本看起来像真实的浏览器请求。
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}
r = requests.get('https://www.google.co.in/search?q=chocolate', headers=headers)
soup = BeautifulSoup(r.text, 'lxml')
elements = soup.select('.r a')
print(elements[0]['href'])
输出 :
https://en.wikipedia.org/wiki/Chocolate
我试图使用美丽的汤抓取newegg的产品名称、描述、价格和图像。我有以下bs4.element.标签类型,我想从标签中提取“src”链接。以下是我的标签: 我怎样才能提取 从这个标签?我试过了 但我收到了Keyerror。
我试图提取搜索关键字从SOAP xml模式与美丽的汤,不知道如何提取值属性。 我已经尝试使用但它不会让我提取value属性。 这是我到目前为止所拥有的: 这就是我有问题的地方。根据美丽的汤留档,这应该输出所有的“值”属性。 如您所见,我试图从所有xs:enumeration标记中的value属性中获取文本。最终结果将是level1的搜索词列表。即。: (蚀变、火成、变质、未发现、矿石、沉积岩、矿脉
我希望从< code>div内的标题和< code >内的文本中提取文本字符串 我可以用<code>汤得到标题。h1</code>,但我想获得特定于div<code>中的<code>h1</code> 超文本标记语言:
我想从一个网站上提取日期。我想知道新闻文章发表的日期/时间。这是我的代码: 从bs4导入组导入请求 您也可以尝试使用此网站: 请查看,这是我想浏览的网站,我想获取的日期/时间是: 这是我的css选择器,它只给我段落,但日期/时间不在段落中,而是在字体标记中。 但当我将css选择器设置为: 我得到[] 是否可以提取不在任何子标记中的数据?
我试图抓取这个网站:https://www.senate.gov/general/contact_information/senators_cfm.cfm 我的代码: 问题是它实际上并没有到达网站。我在soup var中得到的HTML根本不是正确网页中的HTML。 我不知道从这里去哪里!任何和所有的帮助都将不胜感激。
问题内容: 为什么这不返回标签和中间的东西?它什么也不返回。我知道一个事实,因为我正盯着它 也行不通。 ( 编辑: 我发现BeautifulSoup无法正确解析我的页面,这可能意味着我尝试解析的页面在SGML或其他格式中未正确格式化) 问题答案: 您应该发布示例文档,因为代码可以正常工作: 在s内部查找s也可以: