当前位置:   article > 正文

一步一步学习专栏:Python爬取静态网页(猫眼top100),实力好文_可爬静态网站

可爬静态网站

一步一步学习专栏:静态网页爬取

阿巴阿巴阿巴

大家好,我是猕猴tou儿,我又回来了,这篇帖子将以猫眼电影榜单top100榜为例讲解爬取静态网址的基本思路与爬取方法。
在这里插入图片描述

环境

这也是我们的第一步:

import requests
import time
import re#正则
from lxml import etree#xpath
from bs4 import BeautifulSoup#bs4
import pandas as pd#数据框
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
简单介绍一下这次学习所需要的库

request库:实现对网站发送请求,进行基本身份认证。
re库:正则库,在正则里面可进行删减、替换、添加操作,当然在爬取网页的时候,也可以很精确地爬取对应位置。
bs4库:bs4库可解析html网页代码,在爬取前需要使用BeautifulSoup模块对原text进行解析转换处理,以得到’lxml’类型,便于后面用find_all实现对网页节点的对应搜索,以求得到所需要的字段。
lxml库:lxml库也是一个可以对网页html网页代码进行解析的一个库,这里主要使用的是etree.HTML(text)将字符串格式的 html 片段解析成 html 文档,来构造了一个XPath解析对象,用Xpath工具实现对所需字段的爬取。
time库:time库是Python里处理时间的标准库,在这次的学习中主要使用的是时间休眠time.sleep()。
pandas库:pandas库主要是做一些表格的操作,在这次的学习中也是使用它来使数据更加直观。
在这里插入图片描述
如果电脑使用是Anaconda的环境,基本上这些库都是自带好了的,使用的时候引入就好(拍擦是怎么样的我不知道,但是我用的jupyter还是不错),分享一个打代码的快捷补充代码的按键’Tab’,这个按键在word里面是缩进,当然在Jupyter里word可以使用快捷键大多数都可以支持,譬如:Ctrl+c复制、Ctrl+v粘贴、Ctrl+z撤销上一步,这些快捷键便于我们写代码与编写爬虫。

设置headers与url

设置headers的主要作用是为了给访问网页的一个身份证明,这样可以在一些特定的网站上获取更多的内容,当然有些网站爬取时不设置headers访问状态码也是200(200代表访问成功),但是为了严谨我们会设置。

url="https://maoyan.com/board/4?offset=0"
h={
   'Cookie':'__mta=146659211.1592540528981.1592540547213.1592540549962.7; uuid_n_v=v1; uuid=6E511990B1E411EA95E3C92BBC8FF0199C2FCB8FA30740A6832DA0EEB9325063; _csrf=8937778cd7e9c7c5773063c88e52fb16b536e59a63e106fcb6eadb48d92464e5; _lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; _lxsdk_cuid=172cad0002ec8-0275aa4cddc0f-d373666-1fa400-172cad0002e9; _lxsdk=6E511990B1E411EA95E3C92BBC8FF0199C2FCB8FA30740A6832DA0EEB9325063; Hm_lvt_703e94591e87be68cc8da0da7cbd0be2=1592540529; mojo-uuid=c775a8854d972c1e87bb76aca7ecd294; mojo-session-id={"id":"beac7098dd5d404b60798771ada6080e","time":1592540528957}; __mta=146659211.1592540528981.1592540528981.1592540531592.2; mojo-trace-id=13; Hm_lpvt_703e94591e87be68cc8da0da7cbd0be2=1592540550; _lxsdk_s=172cad0002f-0a7-55-498%7C%7C16',
  'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}
  • 1
  • 2
  • 3
  • 4

爬取静态网页就写cookies与User-Agent这两个基本上就够了,cookies与User-Agent在所爬取网页上右键检查,用谷歌浏览器的话(火狐的话应该在下端),在最右边会新出现一个框,点击第四个Netword进去刷新一下,在Headers这个子框里面就可以找到这两个(当然也可以在这块得到网站的url)
在这里插入图片描述
复制过来整理一下headers就算写好了,这里也没有什么坑,就是要注意复制的时候应该要复制对,同时要注意用引号把cookie与User-Agent及他们对应内容引起来,与对应内容之间连接需要用冒号连接,建议把对应内容前的空格删去以求规范(实际上后面requests.get()的报错很少是空格引起的),两个部分中间用逗号连接,这里使用了回车是为了便于检查。url的获取可以直接双击网址,待所有内容出来复制粘贴就好,整理与前面headers的那两个差不多。headers与url的命名不讲究,只要与后文的requests.get()里对应就好。把这些写完检查好,这一项就算写完了。

requests.get()请求网站

这也是爬虫正式访问网站的第一步,在这里我们的请求方式是get请求,关于这个请求方式,也可以通过前文说到的Netword的子框Headers那块可以看到.

q=requests.get(url,headers=h)
  • 1

这里也就是刚刚说到的一一对应,括号里前面是网址,后面是headers,用逗号连接,这里来命名q,方面与后文叙述。

解析网页

前面的操作爬虫已经访问到网页,可以通过q.text来获取网页的内容,如果我们使用的是正则爬取的话解析网页这个步骤就可以略去。但是如果采用BeautifulSoup爬取或者是Xpath工具来爬取的话,就需要对q.text进行解析转换处理。

jx=BeautifulSoup(q.text,'lxml')#BeautifulSoup
Jx=etree.HTML(q.text)#Xpath
  • 1
  • 2

这里是没有什么坑的,唯一要注意的是print(r.text)查看网页内容时,看看有没有乱码,如果有,需要q.encoding=''更改编码格式(基本上utf8与gbk就可以解决大部分的乱码),可以自己多试一下,再进行解析操作。

选择爬取内容,编写爬虫代码

在最早的学习中,我习惯看q.text来找爬取内容的规律,但是后面我发现了一个比较方便的方法还是在原网页上右键检查元素(新思路),对应的网站原内容就会出现,就可以很快找到我们需要爬取的内容,比如我们需要排行榜上的电影名数据。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号