文章目录
前言
8月31日爬虫笔记汇总,有不明白的欢迎提问交流。
#如有不当之处欢迎大佬指正#
提示:以下是本篇文章正文内容,下面案例可供参考
一、爬虫实例
0.爬取深圳租房信息
流程分析:
-
网址:http://zf.szhome.com/Search.html?sor=2&page=1
-
步骤:
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 BeautifulSoup
for 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 pandas
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 = []
################# 以下选中区域为主要爬取分析代码 ##############
##获取网页包头并赋值给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°reefrom=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_