Python爬虫实战--(二)解析网页中的元素

上一篇我们解析了本地的网页,而这一篇我们去解析真实的网络环境中的网页。
目标:用Request + Beautifulsoup库爬取Tripadvisor网站的内容。
Tripadvisor的网址:https://www.tripadvisor.cn/Attractions-g60763-Activities-New_York_City_New_York.html

使用requests发送请求

首先导入requests库和beautifulsoup库

import requests
from bs4 import BeautifulSoup

调用requests.get()方法获得指定url的response,然后利用Beautifulsoup对response进行解析来获得网页的html源码。

url = 'https://cn.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html'
wb_data = requests.get(url)
soup = BeautifulSoup(wb_data.text,'lxml')
print(soup)

这里写图片描述

自己写selector

同上一节一样,接下来我们要确定我们要爬取内容的位置在哪。譬如选中网页中的一个标题“中央公园”,然后右键审查,复制它的selector。利用soup.select()方法来获取对应部分的html内容。
这里写图片描述

titles = soup.select('#taplc_attraction_coverpage_attraction_0 > div:nth-of-type(1) > div > div > div.shelf_item_container > div:nth-of-type(1) > div.poi > div > div.item.name > a')
print(titles)
[<a class="poiTitle" data-tpact="shelf_item_click" data-tpatt="1|poi|105127" data-tpid="162" data-tpp="CoverPage" href="/Attraction_Review-g60763-d105127-Reviews-Central_Park-New_York_City_New_York.html" onclick="widgetEvCall('handlers.shelfItemClick', event, this)" target="_blank">中央公园</a>]

我们现在获取了一个标题的信息,但我们想要获取所有的标题信息。我们回到网页的html,发现每一个标题的上层标签都具有类似的格式:div class=”item name”…。
这里写图片描述
这里写图片描述
我们假定所有div class=”item name”…这样标签下的a标签是我们想要的标题信息,更改代码内的参数进行尝试。在实际中我们想知道某一个标签是不是包含了我们想要的全部内容,我们可以复制标签的内容然后在审查内搜索,看一下搜索到的内容是不是我们想要爬取的内容。掌握这种方法后,我们观察一个标签就可以自己写它的selector了而不用再去复制了。对于父子标签我们使用“>”符号,对于确定某一个div我们使用“div.class的属性值”来进行确定。

titles = soup.select('div.item.name > a')
print(titles)
[<a class="poiTitle" data-tpact="shelf_item_click" data-tpatt="1|poi|105127" data-tpid="162" data-tpp="CoverPage" href="/Attraction_Review-g60763-d105127-Reviews-Central_Park-New_York_City_New_York.html" onclick="widgetEvCall('handlers.shelfItemClick', event, this)" target="_blank">中央公园</a>, <a class="poiTitle" data-tpact="shelf_item_click" data-tpatt="1|poi|1687489" data-tpid="162" data-tpp="CoverPage" href="/Attraction_Review-g60763-d1687489-Reviews-The_National_9_11_Memorial_Museum-New_York_City_New_York.html" onclick="widgetEvCall('handlers.shelfItemClick', event, this)" target="_blank">9/11纪念馆</a>, <a class="poiTitle" data-tpact="shelf_item_click" data-tpatt="1|poi|105125" data-tpid="162" data-tpp="CoverPage" href="/Attraction_Review-g60763-d105125-Reviews-The_Metropolitan_Museum_of_Art-New_York_City_New_York.html" onclick="widgetEvCall('handlers.shelfItemClick', event, this)" target="_blank">大都会艺术博物馆</a>, <a class="poiTitle" data-tpact="shelf_item_click" data-tpatt="1|poi|587661" data-tpid="162" data-tpp="CoverPage" href="/Attraction_Review-g60763-d587661-Reviews-Top_of_the_Rock_Observation_Deck-New_York_City_New_York.html" onclick="widgetEvCall('handlers.shelfItemClick', event, this)" target="_blank">峭石之巅观景台</a>, <a class="poiTitle" data-tpact="shelf_item_click" data-tpatt="2|poi|587661" data-tpid="175" data-tpp="CoverPage" href="/Attraction_Review-g60763-d587661-Reviews-Top_of_the_Rock_Observation_Deck-New_York_City_New_York.html" onclick="widgetEvCall('handlers.shelfItemClick', event, this)" target="_blank">峭石之巅观景台</a>, <a class="poiTitle" data-tpact="shelf_item_click" data-tpatt="2|poi|143363" data-tpid="175" data-tpp="CoverPage" href="/Attraction_Review-g60763-d143363-Reviews-Staten_Island_Ferry-New_York_City_New_York.html" onclick="widgetEvCall('handlers.shelfItemClick', event, this)" target="_blank">史泰登岛渡轮</a>, <a class="poiTitle" data-tpact="shelf_item_click" data-tpatt="2|poi|548557" data-tpid="175" data-tpp="CoverPage" href="/Attraction_Review-g60763-d548557-Reviews-Roosevelt_Island_Aerial_Tram-New_York_City_New_York.html" onclick="widgetEvCall('handlers.shelfItemClick', event, this)" target="_blank">罗斯福岛棕榈泉</a>, <a class="poiTitle" data-tpact="shelf_item_click" data-tpatt="2|poi|8072300" data-tpid="175" data-tpp="CoverPage" href="/Attraction_Review-g60763-d8072300-Reviews-One_World_Observatory_World_Trade_Center-New_York_City_New_York.html" onclick="widgetEvCall('handlers.shelfItemClick', event, this)" target="_blank">世贸一号观景台</a>, <a class="poiTitle" data-tpact="shelf_item_click" data-tpatt="3|poi|1687489" data-tpid="9" data-tpp="CoverPage" href="/Attraction_Review-g60763-d1687489-Reviews-The_National_9_11_Memorial_Museum-New_York_City_New_York.html" onclick="widgetEvCall('handlers.shelfItemClick', event, this)" target="_blank">9/11纪念馆</a>, <a class="poiTitle" data-tpact="shelf_item_click" data-tpatt="3|poi|104370" data-tpid="9" data-tpp="CoverPage" href="/Attraction_Review-g60763-d104370-Reviews-Ellis_Island-New_York_City_New_York.html" onclick="widgetEvCall('handlers.shelfItemClick', event, this)" target="_blank">埃利斯岛</a>, <a class="poiTitle" data-tpact="shelf_item_click" data-tpatt="3|poi|9868012" data-tpid="9" data-tpp="CoverPage" href="/Attraction_Review-g60763-d9868012-Reviews-World_Trade_Center_Memorial_Foundation-New_York_City_New_York.html" onclick="widgetEvCall('handlers.shelfItemClick', event, this)" target="_blank">World Trade Center Memorial Foundation</a>, <a class="poiTitle" data-tpact="shelf_item_click" data-tpatt="3|poi|136072" data-tpid="9" data-tpp="CoverPage" href="/Attraction_Review-g60763-d136072-Reviews-Governors_Island_National_Monument-New_York_City_New_York.html" onclick="widgetEvCall('handlers.shelfItemClick', event, this)" target="_blank">总督岛国家纪念碑</a>, <a class="poiTitle" data-tpact="shelf_item_click" data-tpatt="4|poi|272517" data-tpid="20" data-tpp="CoverPage" href="/Attraction_Review-g60763-d272517-Reviews-Conservatory_Garden-New_York_City_New_York.html" onclick="widgetEvCall('handlers.shelfItemClick', event, this)" target="_blank">温室花园</a>, <a class="poiTitle" data-
  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值