我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第2篇文章,点击查看活动详情
原文出自于传送门
欢迎访问博主的小破站传送门
文章中的代码都是可以直接运行
爬虫实现在‘必应’上搜索和页面的保持
这个小案例 主要使用的是urllib库的相关比较基础的的知识,适合初学者玩。
这里也可以使用类,将所有的函数放在类里面更加方便管理,对于一般代码比较多的爬虫程序时,博主们都会使用类。
def get_url(word) 函数主要是获取好url便于后面的爬取
def request_url(url,filename) 函数主要进行网页请求,并将请求得到的网页保存到同一个文件夹下。
url = 'cn.bing.com/search?{}' 这个链接可以不是‘必应’,也可以是其他的网站 如 百度的www.baidu.com/s?wd=
这里的这个文件的编码格式也要注意一下 不然有可能会出现一堆乱码 with open(filename,'w',encoding='utf-8') as f
from urllib import parse
def get_url(word):
url = 'https://cn.bing.com/search?{}'
#此处使用urlencode()进行编码
params = parse.urlencode({'q' : '菜鸟'})
url = url.format(params)
return url
def request_url(url,filename):
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0'}
req = request.Request(url=url,headers=headers)
res = request.urlopen(req)
html = res.read().decode('utf-8')
#这里要注意这个编码格式 不然有可能回出现一堆乱码
with open(filename,'w',encoding='utf-8') as f:
f.write(html)
word = input('请输入搜索内容:')
url = get_url(word)
filename = word + '.html'
request_url(url,filename)
爬取百度贴吧
这里爬取的是一个静态的网站
from ua_info import ua_list 这个是博主自己使用的一个ua池(需要的小伙伴可以私信博主)
time.sleep(random.randint(1,2)) 每爬取一个页面随机休眠1-2秒钟的时间,主要是为不被抓了,如果只是爬取几个页面也可以不用休眠
run()函数是一个入口函数,spider.run() 调用它,在run()函数里面实现一些基本的数据,然后依次调用get_html(self,url),save_html(self,filename,html),获取网页和保存网页
from urllib import request,parse
import time
import random
from ua_info import ua_list #使用自定义的ua池
class TiebaSpider(object):
def __init__(self):
self.url='http://tieba.baidu.com/f?{}'
def get_html(self,url):
req=request.Request(url=url,headers={'User-Agent':random.choice(ua_list)})
res=request.urlopen(req)
html=res.read().decode("gbk","ignore")
return html
def save_html(self,filename,html):
with open(filename,'w') as f:
f.write(html)
def run(self):
name=input('请输入贴吧名:')
begin=int(input('输入起始页:'))
stop=int(input('输入终止页:'))
for page in range(begin,stop+1):
pn=(page-1)*50
params={
'kw':name,
'pn':str(pn)
}
#拼接URL地址
params=parse.urlencode(params)
url=self.url.format(params)
html=self.get_html(url)
filename='{}-{}页.html'.format(name,page)
self.save_html(filename,html)
#提示
print('第%d页抓取成功'%page)
#每爬取一个页面随机休眠1-2秒钟的时间,为不被抓了
time.sleep(random.randint(1,2))
#统计程序运行的时间
start=time.time()
spider=TiebaSpider()
spider.run()
end=time.time()
print('执行时间:%.2f'%(end-start)) #爬虫执行时间
这是爬取下来的网页源码
本次的分享就到这里了啦,
文章有问题的地方欢迎指出,有任何疑问都可以在评论区留言。希望大家都能够有所收获,大家一起探讨、进步!
如果本章内容对你有所帮助的话可以点赞+收藏。