本文将记录博主学习爬虫的分享,爬虫学习需要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)
运行结果如下: