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 基础