Python 爬虫学习(一)

本文将记录博主学习爬虫的分享,爬虫学习需要python3.+ 、 BeautifulSoup、lxml、requests

在python环境下可以通过以下命令进行相关环境的安装:

pip install BeautifulSoup4
pip install lxml
pip install requests

安装完成就可以开始学习之路,本文以https://cn.tripadvisor.com/Attraction_Products-g60763-a_sort.-d1687489-The_National_9_11_Memorial_Museum-New_York_City_New_York.html?o=a30#ATTRACTION_LIST网站为例进行简单的爬虫学习;

在学习爬虫之前需要了解一些网站响应的相关知识,自行下去学习(#^.^#),然后还要会用F12,会对浏览器用F12,什么,你说按F12什么都没发生,那你把鼠标先点击一下网址在重新F12,什么,你说按了F12结果屏幕更耀眼了(☆.☆),那你应该是用笔记本,请按Fn+F12,然后应该,大概,可能......就会出现一下界面:

恭喜,你学会查看当前网页的页面元素了(p≧w≦q),好了,至于这些元素是什么意思请自行下去学习HTML,CSS。

回归主题,有了以上准备我们就可以开始着手爬虫了,本文的抓取网址在上面给出,首先我们要明确我们的抓取目标,也就是需要抓取的信息是什么(明确目标),打开上述网址,本文以抓取网址中的 标题,介绍,价格,游玩时间为例进行讲解:

好吧,原谅我懒,标记有点反人类,将就看吧,方正就上要抓取上面标记的信息,那么首先我们就是要通过F12的见面去定位这些信息都是在那些HTML标签下,通过检查页面元素,确定每个信息的标签位置如下:

分析发现,四个要素的分布情况如下:标题位于:class为listing_title的<div>标签下的<a>标签下;介绍信息位于class为listing_description的<div>标签下的<span>标签下;价格位于class为price_test的<div>标签下的class为from的<div>标签下的<span>标签下;游玩时间位于:class为product_duration的<div>标签下;

好吧读上去表述好像有点晕乎,主要是我们要搞清信息所处的位置,其实吧,当然也有简单的方法去标记这些位置[○・`Д´・ ○](有简单的不早说),方法如下:

selector会复制出当前标签的路径结构,可以用于等一下的BeautifulSoup解析。

好了,通过一顿操作,我们终于可以步入正题开始写我们的爬虫了(p≧w≦q):

from bs4 import BeautifulSoup
import requests


url = 'https://cn.tripadvisor.com/Attraction_Products-g60763-a_sort.-d1687489-The_National_9_11_Memorial_Museum-New_York_City_New_York.html?o=a30#ATTRACTION_LIST'
#请求网址并接受返回的信息
wb_data = requests.get(url)
#通过.text方法,将网址信息解析成可读文本,并制定‘lxml’为解析器
soup = BeautifulSoup(wb_data.text,'lxml')
#指定标题信息所处的路径
titles = soup.select('div.listing_title > a')
#指定介绍信息所处的路径
introduction = soup.select('div.clickable_listing > div > span')
#指定价格信息所处的路径
prices = soup.select('div.product_price_info > div.price_test > div > span')
#指定游玩时间信息所处的路径
duration = soup.select('div.listing_info > div.product_duration')

for title,description,spend,time in zip(titles,introduction,prices,duration):
    #解析信息:.get_text()方法用于获取当前标签下的文本内容
    data = {
        'title' :title.get_text(),
        'introduction' : description.get_text(),
        'prices' : spend.get_text(),
        'duration' : time.get_text()
    }
    print(data)

运行结果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值