简单的爬虫例子
1.爬取豆瓣出版社名称
import urllib.request
tt=urllib.request.urlopen("https://read.douban.com/provider/all").read().decode("utf8")
import re
print(len(tt))
pat1='<div class="name">(.*?)</div>'
tt=re.compile(pat1).findall(tt)
print(tt)
2.urllib 基础
1.urlretrieve()
urlretrieve(网址,本地文件储存地址) 直接下载网页或者图片到本地
urllib.request.retrieve(网址,本地文件储存地址)
2.urlcleanup()
urlcleanup() 清除缓存
3.info()
得到网页的相应的简介信息info()
不read(),读取的时候是以文件的形式存在.
file=urllib.request.urlopen(“https://read.douban.com/provider/all”)
file.info()
4.getcode()
getcode() 输出当前的状态码
4.geturl()
geturl() 获取当前访问的url 的地址
3.超时设置
就是设置超时的时间值。根据不同的网站反应时间,设置不同的时间。
4.模拟http请求
1.中文会出错可以调用urllib.request.quote(keyword)转码。
2.get的使用
爬取多页改变page。
3.post 使用
模拟登陆和搜索某些信息会用到
会用到 parse 去设置提交的表单内容。然后利用,Request提交表单.最后再次通过urlopen()。就可访问登陆后的界面
4.浏览器的伪装
这里使用的是对headers进行伪装。
5.新闻爬取的例子
1.爬取新闻首页
2.得到新闻链接
3.爬取新闻链接
4.寻找有没有frame
5.如果有就抓取frame 下面对应的网页内容
6.如果没有就直接抓取当前页面
因为爬取的界面式gzip 的所以要解压后在对其进行操作。
实例1
import urllib.request
import re
import zlib #为了解压
url="https://sports.qq.com/nba/"
file=urllib.request.urlopen(url)
mybytes=file.read()
decompressed_data = zlib.decompress(mybytes ,16+zlib.MAX_WBITS)
data = decompressed_data.decode('gbk',errors="replace")
pat='<a target="_blank" href="(.*?)" class'
cc=re.compile(pat).findall(data)
f = open("./wo.txt", "w",encoding="utf-8")
for i in range(0,len(cc)):
thispage=urllib.request.urlopen(cc[i])
# print(thispage.info())
tt=thispage.read().decode("gbk",errors="replace")
#有 frame
# pat="<frame src=(.*?)>"
pat = '<p class="text" style="TEXT-INDENT:2em">(.*?)</p>'
data1= re.compile(pat).findall(tt)
for i in range(len(data1)):
f.write(data1[i]+"\n")
print(len(data1))
f.close()
实例二