第11课、真实世界中的网页解析

目标:爬取真实世界中的网页信息

 熟悉:
 Request库:

是Python中的一个HTTP网络请求库,用来简化网络请求!能够让你的Python程序向服务器发送HTTP请求,获得网页数据的库。

time库:

与时间相关的库,因为在向网站服务器请求的时候,如果你的request请求太过频繁的时候,服务器可能会封掉你的IP。所以应该设置请求间隔时间,与真人访问网站的请求一致。

思路:
1. 熟悉服务器与本地的交换机制
2. 解析真实网页获取数据的方法

客户端(用户)如果想浏览网页首先是向目标URL发送request请求,然后服务器在收到请求之后,返回一个response回应,如Response [200]表示收到,404表示服务器无法回应。如果返回的是200,则加载请求网页的信息。然后在通过BeautifulSoup解析网页,获取想要的元素信息。

代码

 1 from bs4 import BeautifulSoup
 2 import requests
 3 import time
 4 # request是Python中的一个HTTP请求库
 5 # time库与时间相关的库
 6 
 7 url = 'https://www.tripadvisor.cn/Attractions-g60763-Activities-New_York_City_New_York.html'
 8 urls = ['https://www.tripadvisor.cn/Attractions-g60763-Activities-oa{}-New_York_City_New_York.html'.format(str(i)) for i in range(30,1230,30)]
 9 headers = {
10     'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
11 }
12 # headers是在向服务器发送请求的时候,提交的一个User-Agent,此处请求的是手机的网页类型,然后服务器接受请求返回手机的网页类型,因为此网页的手机版比电脑版更易爬取数据。
13 
14 def get_wb_data(url,data=None):     #设置一个参数,初始化data字典为None,防止在循环该函数的时候,前一个字典对后一个字典的影响,所以每次循环都是初始化data
15     # 向目标网站url请求,获取网页信息,解析网页
16     wb_data = requests.get(url,headers = headers)     #向目标服务器URL发送一个request请求
17     soup = BeautifulSoup(wb_data.text,'lxml')
18     time.sleep(4)
19     # print(soup)
20     # 定位要获取信息的元素
21     titles = soup.select('li[class="listing whiteList divider"] > a > div.container.containerLLR > div.title.titleLLR > div')
22     imgs = soup.select('li > a > div.thumb.thumbLLR.soThumb  > div')
23     # print(imgs)
24     for title,img in zip(titles,imgs):
25         data = {
26             'title':title.get_text(),
27             'img':img.get('data-thumburl')
28         }
29         print(data)
30 
31 print("【第1页】:")
32 get_wb_data(url)
33 j = 2
34 for single_url in urls:
35     print("【第{}页】:".format(str(j)))
36     j = j + 1
37     get_wb_data(single_url)

 

问题:
爬取线上网页和本地网页基本上是差不多的,只是线上网页对元素的定位会比较难,需要测试,并且好多网站都会采取了一定的反爬虫措施。线上网站需要先发request请求,才可以获得需要爬取的网页。

当爬取电脑端网页比较难的时候,可以换成其他类型的网页,比如手机端或者pad端的网页。

学习过程中碰到问题还是不少的,主要原因还是对python基本知识不了解导致,所以再学习的过程中又顺便想学习了《笨办法学python》目前已到习题39,类的学习,目前爬虫学习中还没用到,等用到的时候再去学。

转载于:https://www.cnblogs.com/wall9527/p/9905060.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值