python小白学习记录 电影天堂多页爬取实例
from lxml import etree import requests #一般访问网页需要有request请求 请求有请求头 只需要模仿请求头 就能访问到网页内容 baseurl0 = "https://www.ygdy8.net" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36" } #headers是请求头 user-agent是请求头中判断是不是爬虫的其中一项 从f12 抄下来即可 def get_page(): for x in range(1,4): pageurl = "https://www.ygdy8.net/html/gndy/dyzz/list_23_{}.html" pageurl = pageurl.format(x) get_urls(pageurl) #get_page 函数是获取每一页的网址 并返回 因为网站一般有很多页 但网址只有微小的差别 如上就只是list_23_的后面数字代表页数 #我从1循环到了3 就是拿了三页的网址 def get_urls(baseurl): resp = requests.get(baseurl, headers=headers) #requests .get就是get请求 .post就是post请求 然后把请求头传进取 这个传参方式跟swift有点像 #上面这一句的返回值就是response 也就是响应 向网址发送请求后就会得到响应 result = resp.text #这个就是获取响应的内容 也就是你访问的页面的html源代码 html = etree.HTML(result) #这个是将响应的内容 用了eterr的html的方式进行解析 uls = html.xpath("//table[@class='tbspan']//a[@href]/@href") # // 代表从所有源代码中找table 且他的class被指定了 /表示上一层html结构找标签 最后的@href就是拿到href的值 #此处就获取了特定的ul标签并且是一个列表 uls = map(lambda url:baseurl0+url,uls) #这个就是 前半段lambda url:baseurl0+url意思就是把uls列表中的一项拿出来通过url传进去 把前面的http://...什么的根目录加上去 for ul in uls: print(ul)#拿到网站一页中的其中一个电影的超链接 再访问此连接的详情页 传到下一个函数里解析 get_detalis_urls(ul) #get_urls 这个函数就是从拿来的其中一页的网址来进行访问 def get_detalis_urls(url): resp = requests.get(url, headers=headers) result = resp.content.decode('gbk') html = etree.HTML(result) uls = html.xpath("//div/h1/font[@color]/text()") print(uls) uls2 = html.xpath("//img[@src]/@src")[0] print(uls2) print("---------------------------------------") #此函数跟上面那个函数差不多 你可以从电影的详情页里通过xpath语法拿到你想要的html的某一个标签里的内容 get_page()
以上为网页爬取步骤
1,爬取首页各个分页 此处爬取了1-4页
2,解析爬到的各个分页各个电影超链接标签的href值
3,接着通过爬取到的超链接爬取各个电影的详情页
4,解析电影详情页获取所需信息,并保存
此处文本解析常用方法
if text.startswith("某段内容开头"):
...........
用此方法可以在你获取到一个文本,列表时准确拿到想要的文本
text.strip()
用此方法可以去除文本前后的空格

浙公网安备 33010602011771号