目标网站:前程无忧招聘网
目标网址:https://search.51job.com/list/120000,000000,0000,00,9,99,Python,2,1.html
目标数据:(1)职位名(2)公司名(3)工作地点(4)薪资 (5)发布时间
下面展示代码
运行此代码的前提是您的数据库中创建一个spiders库。
那段代码被我不小心删掉了,嘻嘻。 有需要的话请留言,有时间会补上
import requests
from requests.exceptions import RequestException
import re
import csv
import pymysql
def getHTMLText(url):
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36'
}
try:
r = requests.get(url, headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except RequestException as e:
print('error', e)
def fillHtml(html):
data= re.compile(r'class="t1 ">.*? (.*?).*?(.*?).*? (.*?)',re.S)
items=re.findall(data,html)
return items
def saveHtml_sql(data):
# 建立数据库连接
db = pymysql.connect(host='localhost',user='root',password='123',port=3306,db='spiders',charset='utf8')
cursor = db.cursor()
# 创建表
sql='''CREATE TABLE IF NOT EXISTS CTO_top(
职位名 VARCHAR(50) NOT NULL,
公司名 VARCHAR(50) NOT NULL,
工作地点 VARCHAR(50) NOT NULL,
薪资 VARCHAR(50) NOT NULL,
发布时间 VARCHAR(50) NOT NULL,
PRIMARY KEY (公司名))'''
cursor.execute(sql)
db.commit()
# 插入数据
into = 'insert into CTO_top(职位名,公司名,工作地点,薪资,发布时间) values(%s,%s,%s,%s,%s)'
for i in data:
values = (str(i[0]),str(i[1]),str(i[2]),str(i[3]),str(i[4]))
try:
cursor.execute(into,values)
db.commit()
except:
db.rollback()
db.close()
def main():
for i in range(11):
urls ={'http://search.51job.com/list/000000,000000,0000,00,9,99,python,2,'+ str(i+1)+'.html'}
for url in urls:
html=getHTMLText(url)
data=fillHtml(html)
saveHtml_sql(data)
main()
建议数据库使用可视化工具;
如果在mysql命令行里操作会出现中文乱码的问题,如图:
解决办法在命令行里输入:set names gbk 即可。
set names gbk
另需要将爬取的数据保存至txt文本或者csv的小可爱,请到这里自取呀
python爬取前程无忧网,将数据保存至txt及csv中