1、请你利用所学知识完成任意网站的爬虫操作
import urllib.request
response = urllib.request.urlopen('http://www.baidu.com/')
res = response.read()
print(res)
2、请你利用所学知识完成任意网站的爬虫操作,要求涉及用户输入及编码转换要求涉及User-agent头部信息的拼接,头部信息可用User-agent:"mozilia”代替
import urllib.request
head={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0'}
url='https://www.baidu.com/'
new_url=urllib.request.Request(url=url,headers=head)
response=urllib.request.urlopen(new_url,timeout=10)
res=response.read().decode('utf-8')
print(res)
3、请你利用xpath完成大案例的解析
要求:定义类及函数
首先完成当前页的爬取;其次对当前页进行解析 解析提取当前页的标题和标题对应的url地址然后解析提取下一页的url地址,并对标题和标题对应的url地址进行保存操作
根据下一页的url地址继续爬取,继续进行以上步骤
import urllib.parse
import urllib.request
from pip._internal import req # 这个导入看起来没有实际使用,可以考虑删除
print('')
class BaiduTiebaspider:
def __init__(self): # 初始化函数:放一些初始化的量
# 头部信息 url的结构
self.header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'}
self.url = 'https://tieba.baidu.com/f?kw={}&pn={}'
def get_html(self, url): # 发送请求 获取响应
request = urllib.request.Request(url=url, headers=self.header)
res = urllib.request.urlopen(request)
html = res.read().decode()
return html
def parse_html(self): # 解析
pass
def save_html(self, filename, html): # 保存
with open(filename, 'w', encoding='utf-8') as f:
f.write(html)
def run(self): # 控制函数的整体运行
name = input('请你输入要抓取的名称:') # 李健
params = urllib.parse.quote(name) # %%%%%%%%
start = int(input('请你输入起始页:')) # 1
end = int(input('请你输入终止页:')) # 10
for page in range(start, end + 1): # page=1
pn = (page - 1) * 50 # pn=0
url = self.url.format(params, pn)
html = self.get_html(url)
filename = '{}_第{}页.html'.format(name, page)
self.save_html(filename, html)
if __name__ == '__main__':
spider = BaiduTiebaspider()
spider.run()