import requests import re requests.packages.urllib3.disable_warnings() big_url = "https://www.dytt89.com" 1.要用到re模块需先了解正则表达式 2.复制要爬取的url 3.创建param字典 4.respond = request.get(url,param,verify=False) 5.respond.encoding = '对应的网站编码' (从网页源代码里面查看) 6.compile1 = re.compile("正则表达式",re.S) 表示要从html中要提取的text类型 正则表达式中用 .*? 来省略内容 用(?P<自己设定的标签>.*?)来标记要提取的数据 7.get_iterator = compile1.finditer(respond.text) get_iterator 是一个迭代器类型数据 finditer能搜索所有符合6中正则表达式的文本并放入get_iterator中 8.通过遍历get_iterator能找到每条我们需要的文本 一般是通过唯一的条件(即想要提取的片段的唯一条件)去提取一大段并放到字符串str中 后续再设置正则表达式搜索str 逐层搜索 9.在遍历的每一条数据可以用函数group来拿到想要的数据 .group("自己设定的标签") 盗版电影网站爬取2021热门电影名和评分 param = { "User-Agent" : "这里填你的User-Agent" } page = requests.get(big_url,param,verify = False) page.encoding = "gbk" com1 = re.compile(r'>2021必看热片.*?<ul>(?P<text>.*?)</ul>',re.S) its1 = com1.finditer(page.text) infor = "" for it in its1: infor += it.group("text") #print(infor) com2 = re.compile("<li><a href='(?P<url1>.*?)'",re.S) url_list = com2.finditer(infor) for url in url_list: child_url = big_url+url.group('url1') child_com1 = re.compile('<br />◎片 名 (?P<name>.*?)<br />') child_com2 = re.compile('◎豆瓣评分 (?P<pingf>.*?)/10') child_page = requests.get(child_url,params=param,verify=False) child_page.encoding = 'gbk' child_it = child_com1.finditer(child_page.text) child_it2 = child_com2.finditer(child_page.text) for it in child_it: print("电影名字:",it.group("name")) for it1 in child_it2: print("豆瓣评分:",it1.group("pingf")) page.close()
爬虫三剑客之re模块
最新推荐文章于 2023-07-27 00:05:35 发布