爬虫0(正则表达式查找,get)
11月15日
##获取豆瓣电影top250
import requests
import re
#首先获取url,然后用浏览器F12发现是get请求
url='https://movie.douban.com/top250'
headers={
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0'
}
i=0
for i in range(0,226,25):
##发送请求,拿到网页源代码
##把param放到这里是因为这个网页每25个电影为一页
##如果我想获取top250,就需要跳转10次
param = {
'start': i,
'filter': ''
}
resp=requests.get(url,headers=headers,params=param)
text=resp.text
##通过正则表达式找到名字
obj=re.compile(r'<div class="info">.*?<span class="title">(?P<name>.*?)</span>',re.S)
result=obj.finditer(text)
for name in result:
print(name.group('name'))
##记得关闭通道
resp.close()
获取豆瓣电影top250
使用request和re方法
爬虫1 (正则表达式查找,进入子链接,get)
11月16日
import requests
import re
import urllib3
headers={
}
url='https://www.dytt89.com/'
resp=requests.get(url,verify=False)
resp.encoding='gb2312'
resp_text=resp.text
obj=re.compile(r'2022必看热片.*<ul>(?P<ul>.*?)</ul>',re.S)
resule=obj.finditer(resp_text)
for it in resule:
ul_text=it.group('ul')
son_link_list=[]
obj2=re.compile(r"href='/(?P<son_link>.*?)' title=")
result1=obj2.finditer(ul_text)
for son_link in result1:
tem=son_link.group('son_link')
son_link_list.append(tem)
for son_link_tem in son_link_list:
url_tem=url+son_link_tem
print(url_tem)
urllib3.disable_warnings()
resp=requests.get(url_tem,verify=False)
resp.encoding = 'gb2312'
resp_text=resp.text
obj3=re.compile(r"<title>(?P<name>.*?)_电影天堂</title>",re.S)
result_tem=obj3.finditer(resp_text)
for name in result_tem:
print(name.group("name"))
obj4=re.compile(r"<tr>.*?<td style=.*?<a href=\".*?\">(?P<link_xunlei>.*?)</a>.*?</tr>.*?</tbody>",re.S)
result_tem = obj4.finditer(resp_text)
for link in result_tem:
print(link.group("link_xunlei"))
print('\n')
break
resp.close()
采用requests库和re库
通过request发送get or post请求,得到网页源代码,然后用正则表达式搜索源代码文本,找到电影子链接并进入,拿到电影名称以及他的磁力链接
爬虫2(找到菜名,菜价 post)
(post方式)
import requests
import re
url='http://www.xinfadi.com.cn/getCat.html'
headers={
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0'
}
dw={
'prodCatid' :"1186"
}
resp=requests.post(url,headers=headers,data=dw)
text=resp.text
obj1=re.compile(r'"prodName":"(?P<prodName>.*?)"',re.S)
obj2=re.compile(r'"lowPrice":"(?P<lowPrice>.*?)"',re.S)
obj3=re.compile(r'"highPrice":"(?P<highPrice>.*?)"',re.S)
result1=obj1.finditer(text)
result2=obj2.finditer(text)
result3=obj3.finditer(text)
for find in result1:
print(find.group('prodName'))
for find in result2:
print(find.group('lowPrice'))
for find in result3:
print(find.group('highPrice'))
抓包找post
模拟发送请求得到响应,然后对响应分析
找出了菜名,菜的最低价、最高价
当然这个没排序,学会导出表格的话应该还凑活用。。
爬虫3(豆瓣top250 demo版本,采用bs4中的BeautifulSoup函数)
##采用bs4中的BeautifulSoup 通过标签来查找内容
#首先还是获得页面源代码
import requests
from bs4 import BeautifulSoup
url='https://movie.douban.com/top250'
headers={
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0'
}
resp=requests.get(url,headers=headers)
page=BeautifulSoup(resp.text,"html.parser") ##注意这里,通过这个函数获取了page,为了后面能查标签,"html.parser"是为了告诉这个函数你前面那个是什么文件
result1=page.find("ol",class_='grid_view' )##find是找到一个就返回,find_all是全找到
result2=result1.find_all('span',class_='title')[0:] ##找到很多的话,直接切片
for tem in result2:
tds=tem.text #找到被标签标记的内容
print(tds)
print('\n',end='')
resp.close()
采用bs4库中的Beautifulsoup函数
通过标签来查找内容
爬虫4:
使用了正则表达式和BeautifulSoup
报错了
爬整个网站的图:(太爽了)
import requests
from bs4 import BeautifulSoup
import re
##拿到页面源代码
for i in range(1,251,1):
url_raw='http://www.netbian.com/'
if(i!=1):
son_url=f'index_{i}.htm'
else:
son_url=''
url=url_raw+son_url
headers={
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0'
}
#抓取子链接
resp=requests.get(url,headers=headers)
resp.encoding='gbk'
page=BeautifulSoup(resp.text,'html.parser')
result=page.find('div',class_='list')
obj=re.compile(r'<a href="(?P<href>.*?)"',re.S)
href_list=obj.finditer(str(result))
for href in href_list :
if href.group("href")[0]!= 'h':
chilf_href=href.group("href").strip('/')
link=url_raw+chilf_href
##套娃,再次进入子链接
resp=requests.get(link)
resp.encoding='gbk'
page=BeautifulSoup(resp.text,'html.parser')
result=page.find('div',class_='endpage')
result=result.find('div',class_="pic")
obj=re.compile(r'src="(?P<link>.*?)"',re.S)
result_list=obj.finditer(str(result))
for link in result_list:
print(link.group("link"))
resp.close()
标签:实战,入门,url,text,resp,爬虫,re,link,result
From: https://www.cnblogs.com/Hznuxxw/p/16942403.html