Python 用于抓取特定链接的CSS选择器

Python 用于抓取特定链接的CSS选择器,python,beautifulsoup,scrape,Python,Beautifulsoup,Scrape,我是Python新手,正在从事一个刮片项目。我正在使用Firebug复制所需链接的CSS路径。我试图收集“即将到来的事件”标签下的链接,但这只是为了学习如何获得指定的链接 我正在寻找这个问题的解决方案,以及如何使用CSS选择器检索指定链接的建议 from bs4 import BeautifulSoup import requests url = "http://kiascenehai.pk/" r = requests.get(url) data = r.text soup = Be

我是Python新手,正在从事一个刮片项目。我正在使用Firebug复制所需链接的CSS路径。我试图收集“即将到来的事件”标签下的链接,但这只是为了学习如何获得指定的链接

我正在寻找这个问题的解决方案,以及如何使用CSS选择器检索指定链接的建议

from bs4 import BeautifulSoup
import requests

url = "http://kiascenehai.pk/"

r  = requests.get(url)

data = r.text

soup = BeautifulSoup(data)

for link in soup.select("html body div.body-outer-wrapper div.body-wrapper.boxed-mode div.main-     outer-wrapper.mt30 div.main-wrapper.container div.row.row-wrapper div.page-wrapper.twelve.columns.b0 div.row div.page-wrapper.twelve.columns div.row div.eight.columns.b0 div.content.clearfix section#main-content div.row div.six.columns div.small-post-wrapper div.small-post-content h2.small-post-title a"):
    print  link.get('href')

首先,该页面需要(在cookie中)进行城市选择。请使用以下方法来处理此问题:

s = requests.Session()
s.post('http://kiascenehai.pk/select_city/submit_city', data={'city': 'Lahore'})
response = s.get('http://kiascenehai.pk/')
现在,响应获取实际页面内容,而不是重定向到城市选择页面

接下来,保持CSS选择器不超过所需的大小。在本页面中,由于使用了网格布局,因此没有太多内容可供讨论,因此我们首先需要放大右侧的行:

upcoming_events_header = soup.find('div', class_='featured-event')
upcoming_events_row = upcoming_events_header.find_next(class_='row')

for link in upcoming_events_row.select('h2 a[href]'):
    print link['href']

这是联合创始人KiaSceneHai.pk;请不要刮网站,收集数据需要花费大量精力,我们通过API提供访问,您可以使用联系表单请求访问,ty

您能帮我修复并学习如何获得有用的css选择器吗@Martijn Pieters您正在加载的URL要求在
http://kiascenehai.pk/select_city?url=http%3A%2F%2Fkiascenehai.pk%2F
,不包含我即将参加的活动。当我选择“拉合尔”时,比如说,一块饼干就被放好了。您需要确保
请求
也这样做。@MartijnPieters如何做到这一点?请您解释一下为什么要使用它。在这里查找下一个方法?它到底是干什么用的@马蒂恩Pieters@Flecha:见;它扫描元素树以查找请求的元素,但不搜索整个文档,只在起始点之后。@Flecha:所以它就像一个普通的
find
,但它不查看
即将到来的事件\u头
元素之前的任何内容。@Flecha:非常感谢accept,顺便问一下,另一个答案中的代码是否也适用于您?