如何使用CSS选择器使用BeautifulSoup检索位于某个类中的特定链接?

前端之家收集整理的这篇文章主要介绍了如何使用CSS选择器使用BeautifulSoup检索位于某个类中的特定链接?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是 Python的新手,我正在学习它用于抓取目的我使用BeautifulSoup来收集链接(即’a’标签的href).我正在尝试收集站点 http://allevents.in/lahore/的“即将到来的事件”选项卡下的链接.我正在使用Firebug来检查元素并获取CSS路径,但此代码没有返回任何内容.我正在寻找修复程序以及如何选择适当的CSS选择器以从任何站点检索所需链接的一些建议.我写了这段代码
from bs4 import BeautifulSoup

import requests

url = "http://allevents.in/lahore/"

r  = requests.get(url)

data = r.text

soup = BeautifulSoup(data)
for link in soup.select( 'html body div.non-overlay.gray-trans-back div.container div.row div.span8 div#eh-1748056798.events-horizontal div.eh-container.row ul.eh-slider li.h-item div.h-Meta div.title a[href]'):
    print link.get('href')

解决方法

页面在使用类和标记时并不是最友好的,但即便如此,您的CSS选择器也太具体而无法在这里使用.

如果您想要即将发生的事件,您只想要第一个< div class =“events-horizo​​ntal”>,那么只需抓住< div class =“title”>< a href =“...”> < / DIV>标签,所以标题上的链接

upcoming_events_div = soup.select_one('div#events-horizontal')
for link in upcoming_events_div.select('div.title a[href]'):
    print link['href']

请注意,您不应该使用r.text;使用r.content并将解码转换为Unicode到BeautifulSoup.见Encoding issue of a character in utf-8

猜你在找的CSS相关文章