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

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

2023年7月9日发(作者:)

python爬⾍实例⽅法(批量爬取⽹页信息基础代码)⽂章⽬录前⾔8⽉31⽇爬⾍笔记汇总,有不明⽩的欢迎提问交流。#如有不当之处欢迎⼤佬指正#提⽰:以下是本篇⽂章正⽂内容,下⾯案例可供参考⼀、爬⾍实例0.爬取深圳租房信息流程分析: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 requestsfrom bs4 import BeautifulSoupfor page in range(1,9): with open('深圳房租信息.txt','a',encoding='utf-8') as f: r = ("/?sor=2&page=%d" % page) # 发送请求 content = # 获取响应html⽂本 # print(content) soup = BeautifulSoup(content, '') #解析⽹页内容,指定BeautifulSoup解析器为'' # 根据某个标签的属性,查找所有标签 rows = _all(attrs={'class': 'lpinfo'}) #是⼀个多⾏ for row in rows: left = (attrs={'class':'left esf-info'}) ps = _all('p')#找到下⾯所有的

标签 info = ps[0].get_text() info = ('|') print(info) #找价格 right = (attrs={'class': 'right esf-pri'}) price = (attrs={'class': 'red f20'}).get_text() (price) ines(','.join(info))#1次写多⾏ ('n')补充内容:格式化字符串# 格式化字符串。因为有时候需要动化处理# %s,字符串在这⾥,需要⼀个字符串# %f,浮点数# %d,正整数s = '%s今天吃了%s,花了多少钱%.2f,今天星期%d' % ('wahaha','包⼦',2.43,3)print(s)1.爬取深圳算法岗位信息import requestsimport reimport jsonimport 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 = "/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°reefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=".format(x) rsp = (url, verify=False, headers=headers) result = l('window.__SEARCH_RESULT__ =(.*?)', ) result = (result[0]) engine_search_result = ('engine_search_result')################# 将爬取的内容分别写⼊创建的空列表 ############### for engine in engine_search_result: job_name_(('job_name')) company_name_(('company_name')) providesalary_text_(('providesalary_text)) workarea_text_(('workarea_text')) degreefrom_(('degreefrom')) work_year_(('workyear')) jobwelf_(('jobwelf_list')) companysize_text_(('companysize_text')) companyind_text_(('companyind_text'))#将转⾏成⼀个⼆维数据。列名是‘职位名称’,列的数据是job_name_listdata = ame({'职位名称': 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 })_excel('深圳地区算法⼯程师情况调查表.xls')⽤到的库: request ;re ;json ;pandas操作流程:1. ⾕歌浏览器中指定⽹页,右击【检查】查询并分析当前内容信息,并获取⽹页包头[^1]信息2. 通过正则表达式获取内容,并通过代码调试分析下⼀层以便获取新的信息[^1]包头headers:⾕歌浏览器中指定⽹页,右击【检查】,在【Network】中刷新⽹页,左边第⼀个⽂档中找到内容【User-Agent:xxxx】的信息,复制内容以字典形式将其赋值给 headers2.爬取猫图⽚(基于 selenium库 模拟⼈⾃动点击)代码如下(⽰例):import requests# pip install seleniumfrom selenium import webdriverimport timefor x in range(1, 3): # 打开浏览器,⽤插件 wd = (executable_path=r'D:zAI爬⾍爬取⼯具chromedriver_') (1) # 访问某个⽹址 ('/search/cat/?page={}'.format(x)) (3) # 根据xpath的语法,⼀次性查找多个img标签 imgs = _elements_by_xpath('//article/a/img') for img in imgs: # 根据标签的属性来获取某个值 url = _attribute('src') if url: # verify,因为是https请求,verify=False,不进⾏ssl安全认证 rsp = (url, verify=False) # ./,指当前⽬录 with open('./img/%' %(int(())), 'wb') as f: # 将响应内容转换成⼆进制内容 (t) (10) # 退出浏览器 ()怎么在html中查找某个控制的html标签1.找到img这个控件,然后获取src这个属性的值2.利⽤requests发送src这个url地址,另存为⼀个图⽚就可以了e下⾯的a,再下⾯的imgxpath语法:< html>< div name=‘a123’ > < /div>< sex> 男 < /sex>< name> wahaha < /name>< /html>xpath 最基本的表⽰⽅法:/ 代表绝对路径, /标签的名称/html/sex// 代表相对路径,//标签的名称//sex, /html//sex//标签的名称[@属性=属性值]//div[@name=‘a123’]该处使⽤的url⽹络请求的数据。3.爬取⼩说纳兰⽆敌并⽣成词云--------------------------------- 爬取纳兰⽆敌 ------------------------------import requestsimport rewith open('⽃破苍穹之纳兰⽆敌.txt', 'a') as f: for x in range(0, 50): rsp = ('/nalanwudi/{}.html'.format(2752 + x)) ng = nt_encoding # 以

开头,

结束 result = l('

(.*?)

', ) result = result[1:len(result) - 1] ines(result)---------------------- 纳兰⽆敌 指定轮廓词云⽣成 --------------------------import efrom wordcloud import WordCloudfrom imageio import imreadwith open('⽃破苍穹之纳兰⽆敌.txt', 'r') as f: # 获取⼩说⽂本信息 text = () # 把⽂本信息中的词语,进⾏分词分析 tags = t_tags(text, topK=50, withWeight=True) # 创建⼀个⽂本⽂件,存储分词获取的关键字 with open('', 'a') as f1: for tag in tags: ('{0}t{1}n'.format(tag[0], int(tag[1] * 1000))) # ⽣成指定轮廓词云图 C:WindowsFonts rgb颜⾊(百度):#561256 wc = WordCloud(font_path='', width=600, height=800, background_color='#561256', mask=imread(r'C:') # ⾃⼰路径的⼀个图⽚⽂件 ) with open('', 'r') as f2: te(()) _file('')⼆、⽤到的库1.正则表达式 re 库re库 : 从字符串提取满⾜某规则的字符# 正则表达式:从字符串提取满⾜某规则的字符# web 前端开发,有⼀个正则库import re################## 指定字符串查找 ##############################str1 = 'ab,Fafcacd,Fefgfgagfabac'#以b和c开头,中间只有⼀个字符r1 = l('b.c',str1) # . 只代表中间⼀个字符#以a开头,后⾯字符串在[]中选⼀个r2 = l('a[afdfrgzx]',str1)print(r1,r2)############### 提取 数字 ###################d 代表数字,字符串中提取数字print(l('d','a,234f253'))############## 提取 替换 ⾮数字字符 ####################() 按照某种规则,进⾏字符串替换#D 匹配任意⾮数字字符str2 = '4ajkgdj,44746'print(('D','',str2)) #将str2 ⾥的⾮数字字符替换为''print(l('w+', str2))############# 筛选以aa开头aa结尾的中间所有字符串 ###########print(l('aa(.*?)aa', 'aabcfssaadfs'))#fulSoup 库html_doc = """The Dormouse's story

The Dormouse's story

Once upon a time there were three little sisters; and their names wereElsie,Lacie andTillie;and they lived at the bottom of a well.

...

"""# from bs4 import BeautifulSoup# soup = BeautifulSoup(html_doc, '')## #print(fy()) #格式化 html字符串## print(_all('a')) #获取单个内容# print((id='link3')) #单个查找# #print(()) #获取属性# print(_text()) #获取⽂本t库import requests#发送请求# 1)请求的⽅法名称 地址 协议的版本# 2)请求的包头(地址浏览器基础信息发给服务器)# 3)请求的内容[可以没有]## r = ('/events')## #获取响应# print(_code) #获取响应状态码# print(s) #获取响应的包头# print() #获取响应内容# print(t) #获取响应内容,以⼆进制形式# print(()) ## 补充:# import json #json 字符串与dict之间的转换# c = {"data":[{"count":1},{"count":2}]}## print((c),type((c)))## cc = """{"data":[{"count":1},{"count":2}]}""" # 字符串转化成字典必须为双引号## print((cc),type((cc)))################## 各种发送请求 #################################### get:获取资源数据# post:⽤来提交内容# put:⽤来修改内容# delete:删除内容## r = ('/events')# r = ('', data = {'key':'value'})# r = ('', data = {'key':'value'})# r = ('/')# r = ('/')# r = s('/')########################################################### 举例2:## r = ('', data = {'key':'value'})## print(_code) #获取响应状态码# print(s) #获取响应的包头# print() #获取响应内容三、其他内容1、常⽤⽹址google、bing、、baidu2、重要点第⼀步:搜索思维1、了解⽬的: 爬⾍2、限定语⾔: python3、限定站点: cnblogs第⼆步:⼤概浏览⼀下,搜索出来的top10页涉及到的具体技术有哪些这门技术可能会涉及哪些第三⽅包⼀线⼤⼚。技术委员会,开源委员会第三步:python + 第三⽅包包名,看⼀下帮助⽂档哪个看上去简单,就⽤哪个技术预研: 3天 - 两周 时间可申请3、爬⾍三⼤步骤1、发送http请求 -》搜:python 发送http请求httplib,urllib,request -》看哪个简单,搜:python request2、解析⽹页的内容正则表达式⼤法,BeautifulSoup,lxml3、保存内容############################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 - 左边选择⼀个蓝⾊或绿⾊ httpsInspectors下选择 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:交互动作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 集成开发环境下载的地址都在国外,太慢了 国内源 conda 国内源[install]trusted-host = 5、cmd 输⼊ pip install requests 开始装包5、web前端基础 这是⼀个⼤标题这⾥是内容

换⾏HTML标签语⾔:基本格式<标签的名称 标签的属性1="属性值" 标签的属性n="属性值">>

⽤户名:

按钮:

单选按钮

复选按钮

下拉框

连接 百度⼀下,就不告诉你

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688891338a181680.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信