admin 管理员组文章数量: 887006
python 爬虫学习pycharm 基础
目录
1.pycharm下载 社区版 (免费)
2.pycharm 浏览工具
3.爬虫requests模块的使用
测验:抓取肯德基餐厅信息
正则表达式
1.正则支持普通字符
2.元字符,就一个字符来匹配一堆内容
3.量词 控制,前面元字符出现的次数
4.惰性匹配
python 内置模块re
xpatha解析
图片下载
json 把类似字典的字符串真的变成字典
编辑
多线程的概念
线程池
实战 zol桌面壁纸下载完整案例
1.pycharm下载 社区版 (免费)
步骤搜索Download PyCharm: Python IDE for Professional Developers by JetBrains
往下滑
点击Download
建议D盘
nest
2.pycharm 浏览工具
打开后台控制器 F12按住 或者 右键点击检查 是在网页里进行
3.爬虫requests模块的使用
输入 pip install requests 下载好
简单的用下requests
import requests
#爬百度
url = ""
#发送请求
resp=requests.get(url)#设置字符集
resp.encoding = ('utf-8')
#print(resp.text)#拿到页面源代码
#把页面源代码写入到文件中
with open ("mybaidu.html",mode="w",encoding='utf-8')as f:f.write(resp.text)
print("over!!")
测验:抓取肯德基餐厅信息
import requests
if __name__ == "__main__":url='.ashx?op=keyword'keyword = input('请输入想要的城市')page = input('请输入页码')data = {'cname':'','pid':'','keyword':keyword,'pageIndex':page,'pageSize':10,}'''第二步:请求发送'''resp = requests.post(url,data=data)'''第三步:获取响应数据'''page_text = resp.textprint(resp.json())
结果
正则表达式
正则:用来匹配字符串的一门表达式语言
1.正则支持普通字符
2.元字符,就一个字符来匹配一堆内容
\d(能匹配一个数字(0~9))
\w(能够匹配数字,字母,下划线(0-9,a-z,A-Z)
\D(除了数字以外都出
\W(除了数字字母下划线
[abc]匹配abc
[^abc]除了a,b,c
.除了换行符都可以
3.量词 控制,前面元字符出现的次数
+,前面的元字符出现一次或多次
*,
4.惰性匹配
.* 的作用
.*?
python 内置模块re
re.findall
re.search
re.finditer
repile
import re
result=re.findall(r"\d+","今天我有100块,买了2个蛋糕")
#re查找所有 r表示正则
print(result)
输出
import re
#result=re.findall(r"\d+","今天我有100块,买了2个蛋糕")
#re查找所有 r表示正则
result=re.search(r"\d+","今天我有100块,买了2个蛋糕")
print(result.group())
只输出100
re.finditer 数据多用这个 但是输出是item
import re
#result=re.findall(r"\d+","今天我有100块,买了2个蛋糕")
#re查找所有 r表示正则
#result=re.search(r"\d+","今天我有100块,买了2个蛋糕")
result=re.finditer(r"\d+","今天我有100块,买了2个蛋糕")#把所有结果放在迭代器
for item in result:print(item.group())
预加载 obj repile 提前写正则,之后用的时候直接拿来用
例子
header={"user-agent
处理小小的反爬
练习:爬豆瓣
import requests
import re
url="="
head = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203"}
resp = requests.get(url,headers=head)
resp.encoding='utf-8'
obj = repile(r'<div class="item">.*?<span class="title">(?P<name>.*?)</span>',re.S)result = obj.finditer(resp.text)
for item in result:dic=item.groupdict()print(dic)
,re.S #用处是显示换行符
xpatha解析
XPath 是一门在 XML 文档中查找信息的语言,最初是用来搜寻 XML 文档的,但是它同样适用于 HTML 文档的搜索。
所以在Python爬虫中,我们经常使用xpath解析这种高效便捷的方式来提取信息。
对主页面进行分析
抓取主页面当中所有壁纸的链接地址
练习:爬桌面壁纸
第一步先爬它的超链接
import requests
import re
from lxml import etree
domain=""
url="/"
head = {
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203"}
resp = requests.get(url,headers=head)
resp.encoding='gbk'
et = etree.HTML(resp.text)
result = et.xpath("//ul[@class='pic-list2 clearfix']/li/a/@href")
for item in result:url= domain+itemprint(url)
图片下载
json 把类似字典的字符串真的变成字典
import json
下载图片很慢 单线程.单任务
获取下载地址
多线程的概念
多线程:让程序能执行多个任务
from threading import Thread
线程池
线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runnable或Callable接口的实例对象;
实战 zol桌面壁纸下载完整案例
一个页面如何进行数据爬行
(1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行
本文标签: python 爬虫学习pycharm 基础
版权声明:本文标题:python 爬虫学习pycharm 基础 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732351067h1533070.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论