讲解:
首先获取一下所有城市对应的key值,找到所有城市所在的json字符串,向json所在的js页面发送请求,获取信息,然后从第一页获取总的页数,然后遍历所有页数,每到新的一页,找到所有职位信息的详情页url,遍历详情页,获取所要的职位信息。
代码:
import sqlite3,re,json
from urllib.request import urlopen, Request, urlretrieve
from urllib.error import HTTPError
def crawler_city_num():
"""
请求并解析城市编码函数
:return: 返回一个字典
"""
# decode()函数默认使用utf8转化字节,但是51job网页采用的是gbk编码(<meta http-equiv="Content-Type" content="text/html; charset=gbk">) charset属性就是用来设置网页的编码方式的,所以需要使用decode('gbk')将bytes转化成str,与网页编码方式同步!
js_connect=urlopen('https://js.51jobcdn.com/in/js/2016/layer/area_array_c.js?20180319').read().decode('gbk')
str_list = js_connect.split('=')
str_dict = str_list[1].replace(';', '')
dic = json.loads(str_dict) # 把json字符串转化为字典
new_dict = {
}
for key, value in dic.items():
new_dict[value] = key
return new_dict
class Crawler(object):
def __init__(self