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 = "http://www.baidu.com"
#发送请求
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='http://www.kfc.com.cn/kfccda/ashx/GetStoreList.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.text


print(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

        re.compile

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        re.compile     提前写正则,之后用的时候直接拿来用

          例子

header={"user-agent 

处理小小的反爬

练习:爬豆瓣

import requests
import re
url="https://movie.douban.com/top250?start="
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 = re.compile(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="https://desk.zol.com.cn"
url="https://desk.zol.com.cn/"
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+item
  print(url)




 图片下载

json 把类似字典的字符串真的变成字典

import json

 

 下载图片很慢   单线程.单任务  

获取下载地址

多线程的概念

多线程:让程序能执行多个任务

from threading import Thread

 

线程池

线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runnable或Callable接口的实例对象;

实战 zol桌面壁纸下载完整案例

一个页面如何进行数据爬行

(1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值