文章目录

  • 前言
  • 一、爬虫实例
    • 0.爬取深圳租房信息
    • 1.爬取深圳算法岗位信息
    • 2.爬取猫图片(基于 selenium库 模拟人自动点击)
    • 3.爬取小说纳兰无敌并生成词云
  • 二、用到的库
    • 1.正则表达式 re 库
    • 2.BeautifulSoup 库
    • 3.request库
  • 三、其他内容
    • 1、常用网址
    • 2、重要点
    • 3、爬虫三大步骤
    • 4、关于python的快速安装
    • 5、web前端基础

前言

8月31日爬虫笔记汇总,有不明白的欢迎提问交流。
#如有不当之处欢迎大佬指正#


提示:以下是本篇文章正文内容,下面案例可供参考

一、爬虫实例

0.爬取深圳租房信息

流程分析:

  1. 网址:http://zf.szhome.com/Search.html?sor=2&page=1

  2. 步骤:

    1)第一步找到所有class="lpinfo"的行信息

    2)在第1步的基础上找到class=“left esf-info”

    3)在2的基础上找到第2个p,获取文本,获得户型

    4)在第1步的基础上找到class=“right esf-pri”

    5)在第4步的基础上找到class=“red f20”,获取文本,就获得了价格

import requests
from bs4 import BeautifulSoupfor page in range(1,9):with open('深圳房租信息.txt','a',encoding='utf-8') as f:r = requests.get("http://zf.szhome.com/Search.html?sor=2&page=%d" % page)  # 发送请求content = r.text  # 获取响应html文本# print(content)soup = BeautifulSoup(content, 'html.parser')   #解析网页内容,指定BeautifulSoup解析器为'html.parser'# 根据某个标签的属性,查找所有标签rows = soup.find_all(attrs={'class': 'lpinfo'}) #是一个多行for row in rows:left = row.find(attrs={'class':'left esf-info'})ps = left.find_all('p')#找到left...下面所有的<p>标签info = ps[0].get_text()info = info.split('|')print(info)#找价格right = row.find(attrs={'class': 'right esf-pri'})price = right.find(attrs={'class': 'red f20'}).get_text()info.append(price)f.writelines(','.join(info))#1次写多行f.write('\n')

补充内容:格式化字符串

# 格式化字符串。因为有时候需要动化处理
# %s,字符串在这里,需要一个字符串
# %f,浮点数
# %d,正整数s = '%s今天吃了%s,花了多少钱%.2f,今天星期%d' % ('wahaha','包子',2.43,3)
print(s)

1.爬取深圳算法岗位信息


import requests
import re
import json
import pandasjob_name_list = []
company_name_list = []
providesalary_text_list = []
workarea_text_list = []
degreefrom_list = []
work_year_list = []
jobwelf_list =[]
companysize_text_list = []
companyind_text_list = []
#################   以下选中区域为主要爬取分析代码   ##############
##获取网页包头并赋值给headers[^1]
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"}##for循环设定动态URL地址
##剩下的四行代码是获取需要的信息,并格式化。主要通过分析谷歌浏览器网页中检查里的 Element 内容以及 对这四行代码的调试分析自己所需内容的位置。可通过修改关键字直接调用
for x in range(1, 58):url = "https://search.51job.com/list/040000,000000,0000,00,9,99,%25E7%25AE%2597%25E6%25B3%2595%25E5%25B7%25A5%25E7%25A8%258B%25E5%25B8%2588,2,{}.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=".format(x)rsp = requests.get(url, verify=False, headers=headers)result = re.findall('window.__SEARCH_RESULT__ =(.*?)</script>', rsp.text)result = json.loads(result[0])engine_search_result = result.get('engine_search_result')
################# 将爬取的内容分别写入创建的空列表  ###############for engine in engine_search_result:job_name_list.append(engine.get('job_name'))company_name_list.append(engine.get('company_name'))providesalary_text_list.append(engine.get('providesalary_text))workarea_text_list.append(engine.get('workarea_text'))degreefrom_list.append(engine.get('degreefrom'))work_year_list.append(engine.get('workyear'))jobwelf_list.append(engine.get('jobwelf_list'))companysize_text_list.append(engine.get('companysize_text'))companyind_text_list.append(engine.get('companyind_text'))#将转行成一个二维数据。列名是‘职位名称’,列的数据是job_name_list
data = pandas.DataFrame({'职位名称': job_name_list,'公司名称': company_name_list,'工资': providesalary_text_list,'地点': workarea_text_list,'学历': degreefrom_list,'工作年限': work_year_list,'福利待遇': jobwelf_list,'公司规模': companysize_text_list,'行业类型': companyind_text_list})
data.to_excel('深圳地区算法工程师情况调查表.xls')

用到的库: request ;re ;json ;pandas
操作流程:

  1. 谷歌浏览器中指定网页,右击【检查】查询并分析当前内容信息,并获取网页包头[^1]信息
  2. 通过正则表达式获取内容,并通过代码调试分析下一层以便获取新的信息

[^1]包头headers:谷歌浏览器中指定网页,右击【检查】,在【Network】中刷新网页,左边第一个文档中找到内容【User-Agent: xxxx】的信息,复制内容以字典形式将其赋值给 headers

2.爬取猫图片(基于 selenium库 模拟人自动点击)

查看谷歌浏览器版本、去http://npm.taobao.org/mirrors/chromedriver/下载对应的exe软件并解压到某路径

代码如下(示例):

import requests
# pip install selenium
from selenium import webdriver
import timefor x in range(1, 3):# 打开浏览器,用chromedriver.exe插件wd = webdriver.Chrome(executable_path=r'D:\z\AI\爬虫\爬取工具\chromedriver_win32\chromedriver.exe')time.sleep(1)# 访问某个网址wd.get('https://www.pexels.com/search/cat/?page={}'.format(x))time.sleep(3)# 根据xpath的语法,一次性查找多个img标签imgs = wd.find_elements_by_xpath('//article/a/img')for img in imgs:# 根据标签的属性来获取某个值url = img.get_attribute('src')if url:# verify,因为是https请求,verify=False,不进行ssl安全认证rsp = requests.get(url, verify=False)# ./,指当前目录with open('./img/%d.png' %(int(time.time())), 'wb') as f:# 将响应内容转换成二进制内容f.write(rsp.content)time.sleep(10)# 退出浏览器wd.quit()
  • 怎么在html中查找某个控制的html标签

1.找到img这个控件,然后获取src这个属性的值
2.利用requests发送src这个url地址,另存为一个图片就可以了
3.article下面的a,再下面的img

  • xpath语法:

< html>
< div name=‘a123’ > < /div>
< sex> 男 < /sex>
< name> wahaha < /name>
< /html>

  • xpath 最基本的表示方法:
    / 代表绝对路径, /标签的名称
    /html/sex
    // 代表相对路径,//标签的名称
    //sex, /html//sex
    //标签的名称[@属性=属性值]
    //div[@name=‘a123’]

该处使用的url网络请求的数据。


3.爬取小说纳兰无敌并生成词云

--------------------------------- 爬取纳兰无敌 ------------------------------


import requests
import rewith open('斗破苍穹之纳兰无敌.txt', 'a') as f:for x in range(0, 50):rsp = requests.get('http://www.doupoxs.com/nalanwudi/{}.html'.format(2752 + x))rsp.encoding = rsp.apparent_encoding# 以<p>开头,</p>结束result = re.findall('<p>(.*?)</p>', rsp.text)result = result[1:len(result) - 1]f.writelines(result)

---------------------- 纳兰无敌 指定轮廓词云生成 --------------------------

import jieba.analyse
from wordcloud import WordCloud
from imageio import imreadwith open('斗破苍穹之纳兰无敌.txt', 'r') as f:# 获取小说文本信息text = f.read()# 把文本信息中的词语,进行分词分析tags = jieba.analyse.extract_tags(text, topK=50, withWeight=True)# 创建一个文本文件,存储分词获取的关键字with open('word.txt', 'a') as f1:for tag in tags:f1.write('{0}\t{1}\n'.format(tag[0], int(tag[1] * 1000)))# 生成指定轮廓词云图 C:\Windows\Fonts   rgb颜色(百度):#561256wc = WordCloud(font_path='ygyxsziti2.0.ttf',width=600, height=800,background_color='#561256',mask=imread(r'C:\Users\Administrator\Desktop\ca.jpg')  # 自己路径的一个图片文件)with open('word.txt', 'r') as f2:wc.generate(f2.read())wc.to_file('2.png')

二、用到的库

1.正则表达式 re 库

re库 : 从字符串提取满足某规则的字符

# 正则表达式:从字符串提取满足某规则的字符
# web 前端开发,有一个正则库import re################## 指定字符串查找 ##############################
str1 = 'ab,Fafcacd,Fefgfgagfabac'
#以b和c开头,中间只有一个字符
r1 = re.findall('b.c',str1)    # . 只代表中间一个字符
#以a开头,后面字符串在[]中选一个
r2 = re.findall('a[afdfrgzx]',str1)
print(r1,r2)############### 提取 数字 ##################
#\d 代表数字,字符串中提取数字
print(re.findall('\d','a,234f253'))############## 提取 替换 非数字字符 ###################
#re.sub() 按照某种规则,进行字符串替换
#\D  匹配任意非数字字符
str2 = '4ajkgdj,44746'
print(re.sub('\D','',str2))   #将str2 里的非数字字符替换为''
print(re.findall('\w+', str2))############# 筛选以aa开头aa结尾的中间所有字符串  ###########
print(re.findall('aa(.*?)aa', 'aabcfssaadfs'))
#

2.BeautifulSoup 库

html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p><p class="story">...</p>"""# from bs4 import BeautifulSoup
# soup = BeautifulSoup(html_doc, 'html.parser')
#
# #print(soup.prettify())    #格式化 html字符串
#
# print(soup.find_all('a'))   #获取单个内容
# print(soup.find(id='link3'))  #单个查找
# #print(soup.get())    #获取属性
# print(soup.get_text())  #获取文本

3.request库

import requests
#发送请求
# 1)请求的方法名称  地址  协议的版本
# 2)请求的包头(地址浏览器基础信息发给服务器)
# 3)请求的内容[可以没有]
#
# r = requests.get('https://api.github.com/events')
#
# #获取响应
# print(r.status_code)  #获取响应状态码
# print(r.headers)   #获取响应的包头
# print(r.text)   #获取响应内容
# print(r.content)   #获取响应内容,以二进制形式
# print(r.json())   ## 补充:
# import json  #json 字符串与dict之间的转换
# c = {"data":[{"count":1},{"count":2}]}
#
# print(json.dumps(c),type(json.dumps(c)))
#
# cc = """{"data":[{"count":1},{"count":2}]}"""   # 字符串转化成字典必须为双引号
#
# print(json.loads(cc),type(json.loads(cc)))##################  各种发送请求  #################################### get:获取资源数据
# post:用来提交内容
# put:用来修改内容
# delete:删除内容
#
# r = requests.get('https://api.github.com/events')
# r = requests.post('http://www.baidu.conm', data = {'key':'value'})
# r = requests.put('http://www.baidu.conm', data = {'key':'value'})
# r = requests.delete('http://news.baidu.com/')
# r = requests.head('http://news.baidu.com/')
# r = requests.options('http://news.baidu.com/')
########################################################### 举例2:
#
# r = requests.put('http://www.baidu.com', data = {'key':'value'})
#
# print(r.status_code)  #获取响应状态码
# print(r.headers)   #获取响应的包头
# print(r.text)   #获取响应内容

三、其他内容

1、常用网址

https://www.csdn.net
https://www.cnblogs.com
简书
https://gitee.com
https://github.com 拥有全球开源的项目
https://stackoverflow.com

google、bing、magi.com、baidu

2、重要点

第一步:搜索思维

1、了解目的:    爬虫2、限定语言:    python3、限定站点:    cnblogs

第二步:大概浏览一下,搜索出来的top10页涉及到的具体技术有哪些

这门技术可能会涉及哪些第三方包一线大厂。技术委员会,开源委员会

第三步:python + 第三方包包名,看一下帮助文档

哪个看上去简单,就用哪个

技术预研: 3天 - 两周 时间可申请

3、爬虫三大步骤

1、发送http请求 -》搜:python 发送http请求

httplib,urllib,request  -》看哪个简单,搜:python request

2、解析网页的内容

正则表达式大法,BeautifulSoup,lxml

3、保存内容

############################
1、http是什么?

1.0 如何安装第三方包
1.1 request库

2.网页的构成是什么?
2.0 大概了解一下HTML常见的网页内容是怎么样的
2.1 怎么分析一个Web网页
2.1 BeautifulSoup 库

########################

发送请求
1)请求的方法名称 地址 协议的版本
2)请求的包头(地址浏览器基础信息发给服务器)
3)请求的内容[可以没有]


获取响应

  1. 响应状态码 协议版本
    2)响应的包头(服务器基础信息)
  2. 响应的内容[可以没有]

爬虫软件Fiddler使用:

tools - options - https - 勾选decrypt https traffic 安装证书

打开一个网页 - 右边页面选择 Inspectors - 左边选择一个蓝色或绿色 https

Inspectors下选择 Raw - 下面继续选择 Raw - view in notepad 打开文本


请求的方法:

GET :获取资源查询数据
HTTP/1.1 :协议的版本
POST :提交内容给服务端
PUT :修改
DELETE :删除某个内容
URL中:前面的部分叫路由器地址,请求的参数

响应状态码常见:
200:服务端接收到这个信息并成功处理
301,302:重定向,中转
404:找不到网址
500:服务端内部错误

2xx:成功处理
3xx:重定向
4xx:客户端错误
5xx:服务端错误

##################爬虫三大步骤二:解析网页内容###########
1、
HTML 语言:网页的控件内容
CSS 语言:样式美不美
JAVA script:交互动作

2、
http://zf.szhome.com/Search.html?sor=2&page=1

1.第一步找到所有lpinfo的行信息

2.在第1步的基础_上找到class=" left esf-info"

3.在2的基础上找到第2个p,获取文本,获得户型

4.在第1步的基础上找到class=’ right esf-pri’

5.在第4步的基础上找到class=" red f20”, 获取文本,就获得了价格:




4、关于python的快速安装

用python自带的
anaconda 集成开发环境

下载的地址都在国外,太慢了

1.where pip
2.pip 国内源 conda 国内源


用国内源装python库:
1、cmd -> where pip
2、输入:pip config set global.index-url http://mirrors.aliyun.com/pypi/simple/
3、复制 地址 粘贴地址
4、修改txt文件内容为:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host = mirrors.aliyun.com
5、cmd 输入 pip install requests 开始装包

5、web前端基础

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>这是一个大标题</title>
</head>
<body>
这里是内容
<br><br>换行
HTML标签语言:基本格式<标签的名称 标签的属性1="属性值" 标签的属性n="属性值"></标签的名称>>
<br><br><br><br><br><br>
用户名:<input name="username" maxlength="5">
<br><br>
按钮:<button id="login">登录按钮</button>
<br><br>
单选按钮 <input type="radio" name="sex">男<input type="radio" name="sex">女
<br><br><br><br>
复选按钮 <input type="checkbox" name="love">吃<input type="checkbox" name="love">喝<input type="checkbox" name="love">玩
<br><br><br><br>
下拉框 <select name="city"><option>深圳</option><option>上海</option></select>
<br><br><br><br>
连接 <a href="https://www.baidu.com">百度一下,就不告诉你</a></body>
</html>

python爬虫实例方法(批量爬取网页信息基础代码)相关推荐

  1. Python爬虫:Xpath爬取网页信息(附代码)

    Python爬虫:Xpath爬取网页信息(附代码) 上一次分享了使用Python简单爬取网页信息的方法.但是仅仅对于单一网页的信息爬取一般无法满足我们的数据需求.对于一般的数据需求,我们通常需要从一个 ...

  2. 网络爬虫学习2 - 爬取网页的通用代码框架、HTTP协议、Requests库的各种方法

    网络爬虫MOOC学习打卡 - 第二天 文章目录 网络爬虫MOOC学习打卡 - 第二天 一.爬取网页的通用代码框架 1.理解requests库的异常 2.Respones类提供了一个方法 -- r.ra ...

  3. python爬虫scrapy框架爬取网页数据_Scrapy-Python

    scrapy Scrapy:Python的爬虫框架 实例Demo 抓取:汽车之家.瓜子.链家 等数据信息 版本+环境库 Python2.7 + Scrapy1.12 初窥Scrapy Scrapy是一 ...

  4. 一个简单python爬虫的实现——爬取电影信息

    最近在学习网络爬虫,完成了一个比较简单的python网络爬虫.首先为什么要用爬虫爬取信息呢,当然是因为要比人去收集更高效. 网络爬虫,可以理解为自动帮你在网络上收集数据的机器人. 网络爬虫简单可以大致 ...

  5. python爬虫实战笔记——爬取图书信息(利用selenium库+chromedriver.exe插件)

    准备: 1.插件chromedriver.exe 2.已经安装好谷歌浏览器Chrome 编写代码 from bs4 import BeautifulSoup from selenium import ...

  6. Python爬虫:批量爬取变形金刚图片,下载保存到本地。

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本文文章来自:CSDN 作者:Guapifang 其实和爬取普通数据本质一样,不过 ...

  7. Python爬虫教你爬取视频信息

    大家好,我是拉斯,今天分享一个爬取某音视频的一个小案例,大家一起学习 目录 前言 基本环境配置 爬取目标视频 获取视频链接 1.查看网页源代码 2.抓包工具捕捉 下载视频(以mp4格式进行保存) 获取 ...

  8. Python爬虫项目--批量爬取公司债券平台网公司信息并下载PDF

    # 下载公司债券平台项目PDF信息 08年6月 合起来67页数据import os import time import requests from selenium import webdriver ...

  9. Python爬虫学习笔记 -- 爬取糗事百科

    Python爬虫学习笔记 -- 爬取糗事百科 代码存放地址: https://github.com/xyls2011/python/tree/master/qiushibaike 爬取网址:https ...

最新文章

  1. mariadb安装和使用
  2. @清晰掉 GNU C __attribute__
  3. 语义分割的时候,发的牢骚
  4. 浅拷贝 python_python中什么是浅拷贝
  5. 轻松学DIV教程(div+css布局)
  6. android的ui怎么做到流畅,android提高UI的流畅度
  7. 【程序性能分析利器】Google Perf Tool 和 Valgrind 工具包简介
  8. excel 单元格求和大于某个数后返回列号_Excel最常用的几个函数,我都帮你整理好了!...
  9. Day7:html和css
  10. 大数据学习笔记06:伪分布式Hadoop
  11. 安装 PHP memcached 扩展遇到的3个问题
  12. 成都KTV点歌类小程序开发公司,微信小程序开发
  13. 三、数学建模之灰色关联分析【清风数学建模个人笔记】
  14. 计算机辅助设计1(PS)期末考核试题,福师《计算机辅助设计1(PS)》期末试卷A卷...
  15. Linux下iwconfig权限,Linux系统中iwconfig命令使用详解
  16. 合作博弈(coalitional game)——核仁(Nucleolus)初解
  17. php 获取提成的公式,拿提成的工资怎么算的有公式吗_工资提成计算公式
  18. 游戏开发中的专业术语
  19. [转]成功=狼+狐狸+豹子
  20. IDEA2022 提示:更新 TKK 失败,请检查网络连接

热门文章

  1. OPC读写Kepware(C++)
  2. vue-devtools安装文件
  3. 2.3 高密度散点图
  4. php高级教程Thinkphp电商项目实战开发
  5. 集成电路/微电子/电子科学与技术 在IEEE上可以参考的期刊会议总结
  6. win10离线装linux子系统 运行ubuntu.exe失败闪退没反应
  7. fastadmin介绍
  8. lradc按键驱动程序分析(for F1C100S)
  9. Element ui+vue前端框架组件主题美化后台管理系统模板html
  10. 多项目版本管理:monorepo 策略