python爬虫实战之爬取智联职位信息和博客文章信息
1.python爬取招聘信息
简单爬取智联招聘职位信息
# !/usr/bin/env python
# -*-coding:utf-8-*-
"""
@Author : xiaofeng
@Time : 2018/12/18 16:31
@Desc : Less interests,More interest. (爬取智联招聘职位数据)
@Project : python_appliction
@FileName: zhilianzhaopin.py
@Software: PyCharm
@Blog :https://blog.csdn.net/zwx19921215
""" import pymysql as db
import requests # mysql配置信息
mysql_config = {
'host': '101.0.2.110',
'user': 'test',
'password': 'test',
'database': 'xiaofeng',
'charset': 'utf8'
} # url
url = 'https://data.highpin.cn/api/JobSearch/Search' """
爬取智联招聘职位数据
@:param page 页码
@:param position 职位关键字
""" def zhilian(page, position):
# 封装头信息
headers = {
'Referer': 'https://www.highpin.cn/zhiwei/',
'Origin': 'https://www.highpin.cn',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
'Accept': 'application/json, text/javascript, * / *; q=0.01',
}
# 表单信息
datas = {
'Q': position,
'pageIndex': page
}
resp = requests.post(url, data=datas, headers=headers)
result = resp.json()
return result """
控制台输出
""" def print_data(result):
body = result['body']['JobList']
print(body) """
数据入库
""" def insert(result):
print("insert......")
database = db.connect(**mysql_config)
for item in result:
print(item)
sql = "INSERT INTO zhilian(JobID,JobTitle,ReferrerType,CompanyName,AnnualSalaryMin," \
"AnnualSalaryMax,JobLactionStr,JobLactionID,JobTags\
,JobDegree,JobDegreeId,WorkExperience,WorkExperienceID,CompanyIndustry,CompanyIndustryID," \
"CompanyType,CompanyTypeID,PublishDate,CompanyScale,SalaryWhite) \
VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)" # list convert to str
JobLactionID = str(item['JobLactionID'])
CompanyIndustryID = str(item['CompanyIndustryID']) if 'JobTags' in item:
JobTags = str(item['JobTags'])
else:
JobTags = ''
cursor = database.cursor()
cursor.execute(sql, (
item['JobID'], item['JobTitle'], item['ReferrerType'], item['CompanyName'], item['AnnualSalaryMin'],
item['AnnualSalaryMax'],
item['JobLactionStr'], JobLactionID, JobTags, item['JobDegree'], item['JobDegreeId'],
item['WorkExperience'],
item['WorkExperienceID'], item['CompanyIndustry'], CompanyIndustryID, item['CompanyType'],
item['CompanyTypeID'], item['PublishDate'], item['CompanyScale'], item['SalaryWhite']))
database.commit()
cursor.close()
database.close() def main(position):
result = zhilian(1, position)
page_count = result['body']['PageCount']
print("---------------共", page_count, "页-------------")
page = 1
while page <= page_count:
print('----------------第', page, '页-----------------')
result = zhilian(page, position)
# print_data(result)
body = result['body']['JobList']
insert(body)
page = page + 1 if __name__ == '__main__':
main('java')
控制台输出信息
入库数据
2.python爬取csdn博客文章
python简单爬取csdn博客文章列表(仅供学习)
步骤:
1.分页获取博客url
2.解析html 获取指定信息
# !/usr/bin/env python
# -*-coding:utf-8-*-
"""
@Author : xiaofeng
@Time : 2018/12/20 11:30
@Desc : Less interests,More interest.(爬取csdn博客文章列表)
@Project : python_appliction
@FileName: csdn.py
@Software: PyCharm
@Blog :https://blog.csdn.net/zwx19921215
"""
import requests
from lxml import html # 声明头信息
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'
} """
解析html,获取相关数据
@:param url 网页路径
""" def parse_html(url):
response = requests.get(url=url, headers=headers)
text = html.fromstring(response.text)
hrefs = text.xpath('//h4/a/@href')
title = text.xpath('//h4/a/text()')
"""
文章摘要、发布日期、阅读数、评论数等其余属性自行按需获取即可
"""
# 移出第一个元素链接,不知道为啥 csdn 博客默认都多了一条数据,也就多了一个链接
hrefs.pop(0)
titles = []
# 格式化标题
for item in title:
st = str(item).replace('\n', '').strip()
if st != '':
titles.append(st) # 组合输出
# 移出第一个元素,不知道为啥 csdn 博客默认都多了一条数据 “帝都的凛冬”
titles.pop(0)
i = 0
for item in titles:
results = {
'标题': titles[i],
'链接': hrefs[i]
}
i = i + 1
print(results) """
自动判断页数
@:param page_url 页面路径
@:param page 页号
""" def get_page(page_url, page):
url = page_url + str(page)
print('url=', url)
response = requests.get(url=url, headers=headers)
text = html.fromstring(response.text)
next_page = text.xpath(
'//div[@class="ui-paging-container"]/ul/li[@class="js-page-next js-page-action ui-pager"]/text()')
if next_page:
parse_html(url)
page = page + 1
get_page(page_url, page)
else:
return -1 """
分页爬取相关数据
@:param page_url 页面路径
@:param page 页号
""" def get_page2(page_url, page):
url = page_url + str(page)
while page <= 10:
print('\n')
print("----------------------第", page, "页--------------------")
print('url=', url)
print('\n')
parse_html(url)
page = page + 1
url = page_url + str(page) if __name__ == '__main__':
page_url = 'https://blog.csdn.net/zwx19921215/article/list/'
get_page2(page_url, 1)
希望能帮到你们,最后分享一些小福利
链接:https://pan.baidu.com/s/1sMxwTn7P2lhvzvWRwBjFrQ
提取码:kt2v
链接容易被举报过期,如果失效了就在这里领取吧
python爬虫实战之爬取智联职位信息和博客文章信息的更多相关文章
- Python爬虫实战之爬取百度贴吧帖子
大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 对百度贴吧的任意帖子进行抓取 指定是否只抓取楼主发帖 ...
- python爬虫实战(五)--------智联招聘网
前些天帮同事爬取一些智联招聘网上的关于数据分析的职位信息,他说要做一些数据分析看看,现在已经帮他爬完了.我本来想用Scrapy来爬的,但是不知道为什么爬取的数据和真实搜到的数据不太一样,比如:搜索到的 ...
- Python爬虫实战:爬取腾讯视频的评论
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 易某某 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...
- Python爬虫实战之爬取糗事百科段子
首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...
- Python爬虫实战之爬取糗事百科段子【华为云技术分享】
首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...
- 芝麻HTTP:Python爬虫实战之爬取糗事百科段子
首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...
- python 爬虫实战1 爬取糗事百科段子
首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 本篇目标 抓取糗事百科热门段子 过滤带有图片的段子 实现每按一次回车显示一个段子的发布时间,发布人 ...
- python 爬虫实战4 爬取淘宝MM照片
本篇目标 抓取淘宝MM的姓名,头像,年龄 抓取每一个MM的资料简介以及写真图片 把每一个MM的写真图片按照文件夹保存到本地 熟悉文件保存的过程 1.URL的格式 在这里我们用到的URL是 http:/ ...
- 原创:Python爬虫实战之爬取美女照片
这个素材是出自小甲鱼的python教程,但源码全部是我原创的,所以,猥琐的不是我 注:没有用header(总会报错),暂时不会正则表达式(马上要学了),以下代码可能些许混乱,不过效果还是可以的. 爬虫 ...
随机推荐
- Java程序员必读的9本书
本文列出的9本书在Java程序员界都是被认为很棒的书.当一个程序员开始初学Java时,他的第一个问题应该是如何选择一本书来作为指导学习Java.这个问题也就表明,相对于其他的教程和博客,Java书籍还 ...
- 树莓派 Raspberry PI基础
树莓派 Raspberry PI基础 官网网址:https://www.raspberrypi.org 下载地址:https://www.raspberrypi.org/downloads/ 官方系统 ...
- SpringBoot中遇到的一些问题
1.JQuery和bootstrap报404的问题 在html页面导入的js和css的时候,不要加static这级目录,直接跳过即可,例如 导入的时候不需要加static目录,直接导入js/和css/ ...
- Kubernets中获取客户端真实IP总结
1. 导言 绝大多数业务场景都是需要知道客户端IP的 在k8s中运行的业务项目,如何获取到客户端真实IP? 本文总结了通行的2种方式 要答案的直接看方式一.方式二和总结 SEO 关键字 nginx i ...
- IE,Google Chrome等浏览器,调试模式在控制台可以手动调用页面的方法来调试
IE,Google Chrome等浏览器,调试模式在控制台可以手动调用页面的方法来调试,这种方式也可以进断点.
- Java并发基础10:原子性操作类的使用
在 java5 以后,我们接触到了线程原子性操作,也就是在修改时我们只需要保证它的那个瞬间是安全的即可,经过相应的包装后可以再处理对象的并发修改,本文总结一下Atomic系列的类的使用方法,其中包含: ...
- JLabel有点感觉了,码上
Java中Label的姿势 Jabel与JDialog窗口的是否可见可做为弹窗. 设置字体颜色 jl.setForeground(Color.ORANGE);//设置字体颜色 设置字体与大小 jl.s ...
- Vue点击当前元素添加class 去掉兄弟的class
<div id="app"> <ul> <li v-for="(todo, index) in todos" v-on:click ...
- IDEA 正式版终于支持中文版和 JDK 直接下载了(太方便了)附介绍视频
IDEA 2020.1 经过了漫长的打磨终于发布正式版了,而这次的版本不止直接支持 Java 14,还带来了两个重量级的功能,官方中文版支持和 JDK 直接下载. 在之前的开发中,当我们需要下载 JD ...
- 浅谈Java参数传递机制
Java参数传递 才疏学浅,今天才知道Java中方法的参数是可以传递对象引用进去的. Java的参数传递机制很简单,其实就是值传递. 所谓值传递,也就是我们在给方法传递一个参数的时,传递的 ...