python爬虫——requests

这篇博客介绍了Python爬虫中requests库和urllib模块的使用,包括基础图片爬取、字节流数据转换、url编码解码,以及如何处理中文问题。通过实例讲解了如何输入搜索内容并保存html文件。

python爬虫requests上

3.用urlretrieve:

在这里插入图片描述

2.with open

import urllib.request
import urllib.parse
import requests
url ='https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=python%20%E5%9C%A8%E5%BA%93%E9%87%8C%E9%9D%A2%E5%AE%89%E8%A3%85json&step_word=&hs=0&pn=0&spn=0&di=3200&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=3292127761%2C2561460082&os=1102035953%2C4035766811&simid=0%2C0&adpicid=0&lpn=0&ln=1195&fr=&fmq=1618834820344_R&fm=&ic=undefined&s=undefined&hd=undefined&latest=undefined&copyright=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=15&oriquery=&objurl=https%3A%2F%2Fgimg2.baidu.com%2Fimage_search%2Fsrc%3Dhttp%3A%2F%2Fimg-blog.csdnimg.cn%2F20200526170234488.png%3Fx-oss-process%3Dimage%2Fwatermark%2Ctype_ZmFuZ3poZW5naGVpdGk%2Cshadow_10%2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpY3RvcnkwOTQz%2Csize_16%2Ccolor_FFFFFF%2Ct_70%26refer%3Dhttp%3A%2F%2Fimg-blog.csdnimg.cn%26app%3D2002%26size%3Df9999%2C10000%26q%3Da80%26n%3D0%26g%3D0n%26fmt%3Djpeg%3Fsec%3D1621426988%26t%3D12927a841d449e0a8c00666fac19a8cb&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bvf1g_z%26e3BgjpAzdH3F2wpij6_dcAzdH3FMpTwM2afNDvyM3QpY4xeZoOaOaOOaOaO_z%26e3Bip4s&gsm=1&rpstart=0&rpnum=0&islist=&querylist=&force=undefined'
res =requests.get(url)
# fn =open('code.png','wb')
# fn.write(res.content)
# fn.close()
with open('code2.jpg','wb') as f:
    f.write(res.content)

在这里插入图片描述

方法三:urlretrieve

在这里插入图片描述

1.urllib——基础图片的爬取

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

urlib.request的使用

字节流数据转换——字节→str类型——bytes

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import urllib.request
import urllib.parse
import requests
url = 'https://www.baidu.com/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'}
# 创建urllib.req请求对象
req = urllib.request.Request(url,headers=headers)
# 获取响应对象
res =urllib.request.urlopen(req)
html =res.read().decode('utf-8')
print(html)

在这里插入图片描述

urllib.parse的使用——转化中文处理

在这里插入图片描述

在这里插入图片描述

urllib.parse.urlencode(字典)

# url =https://www.baidu.com/s?wd=%E8%BF%AA%E5%8D%A2%E6%9C%A8%E5%A4%9A
# url =https://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&word=迪卢姆多
wd ={'wd':'迪卢姆多'}
result =urllib.parse.urlencode(wd)
print(result)
base_url ='https://www.baidu.com/s?'
url =base_url +result
print(url)

在这里插入图片描述

urllib.parse.quote(str)

r ='迪卢姆多'
result =urllib.parse.quote(r)
print(r)
base_url ='https://www.baidu.com/s?'
url =base_url +result
print(url)

在这里插入图片描述

拓展:网页百分号:unquote:

在这里插入图片描述

在这里插入图片描述

需求:输入搜索内容,输出并保存html

urlencode——字典;quote——字符串

在这里插入图片描述
在这里插入图片描述

# 需求:搜索查询内容,输出+保存本地html
from urllib input request
import urllib.parse
base_url = 'https://www.baidu.com/s?'
key =input('请输入内容:’)
zidian ={'wb':key}
key1 =urllib.parse.urlencode(zidian)
url =base_url + key1
headers ={
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36
}
req =urllib.request.Request(url,headers =headers)
res =urllib.requset.urlopen(req)
html =res.read().decode('utf-8')
with open ('搜索页面信息.html''w',encoding ='utf-8') as f:
     f.write(html)

quote:

在这里插入图片描述

# 需求:把只能单一搜索内容换成其他内容
key =input('请输入搜索内容:')
wd ={'wd':key}
result =urllib.parse.urlencode(wd)
base_url ='https://www.baidu.com/s?'
url =base_url +result
print(url)

在这里插入图片描述

# 需求:把只能单一搜索内容换成其他内容
key =input('请输入搜索内容:')
wd ={'wd':key}
result =urllib.parse.urlencode(wd)
base_url ='https://www.baidu.com/s?'
url =base_url +result
# print(url)
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'}
req =urllib.request.Request(url,headers=headers)
res =urllib.request.urlopen(req)
html =res.read().decode('utf-8')
with open('搜索.html','w',encoding='utf-8') as f:
    f.write(html)

在这里插入图片描述

在这里插入图片描述

百度贴吧的练习html

在这里插入图片描述
在这里插入图片描述

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'}
name = input('请输入贴吧名:')
begin = int(input('请输入起始页'))
end = int(input('请输入结束页'))
kw = {'kw': name}
result = urllib.parse.urlencode(kw)
# 拼接url
for i in range(begin, end + 1):
    pn = (i - 1) * 50
    print(pn)
    base_url = 'https://tieba.baidu.com/f?'
    url = base_url + result + '&pn=' + str(pn)
    req =urllib.request.Request(url,headers=headers)
    res =urllib.request.urlopen(req)
    html = res.read().decode('utf-8')
    # html = res.read().decode('utf-8')
    filename = '第' +str(i) +'页.html'
    with open(filename,'w',encoding='utf-8') as  f:
        print('正在爬取%d页'% i)
        f.write(html)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

使用Python编写一个简单的网页小说下载器,可借助requests库和BeautifulSoup库。requests库用于发送HTTP请求获取网页内容,BeautifulSoup库用于解析HTML内容,从中提取所需的小说文本信息。 以下是一个简单示例代码,假设小说页面结构较为简单,小说章节链接可以直接获取,且章节内容在特定的HTML标签内: ```python import requests from bs4 import BeautifulSoup # 定义函数,获取小说章节页面内容 def get_chapter_content(url): try: response = requests.get(url) response.raise_for_status() response.encoding = response.apparent_encoding soup = BeautifulSoup(response.text, 'html.parser') # 假设小说内容在一个特定的<div>标签中,这里需要根据实际网页结构修改 content_div = soup.find('div', class_='content') if content_div: return content_div.get_text() return None except requests.RequestException as e: print(f"请求出错: {e}") return None # 定义函数,下载小说 def download_novel(novel_url, save_path): try: response = requests.get(novel_url) response.raise_for_status() response.encoding = response.apparent_encoding soup = BeautifulSoup(response.text, 'html.parser') # 假设章节链接在一个特定的<ul>标签中的<a>标签里,需要根据实际网页结构修改 chapter_links = soup.find_all('a', class_='chapter-link') with open(save_path, 'w', encoding='utf-8') as file: for link in chapter_links: chapter_url = link['href'] chapter_title = link.get_text() file.write(f"{chapter_title}\n") chapter_content = get_chapter_content(chapter_url) if chapter_content: file.write(chapter_content) file.write("\n\n") except requests.RequestException as e: print(f"请求出错: {e}") # 示例使用 novel_url = "https://example.com/novel" # 替换为实际的小说目录页URL save_path = "novel.txt" # 保存的文件路径 download_novel(novel_url, save_path) ``` 上述代码仅是一个基础示例,实际应用中,不同小说网站的HTML结构差异很大,需要根据具体网站的结构调整代码,找到正确的章节链接和内容所在的HTML标签。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值