由于瓜子二手车网站的城市列表在网页源代码中无法获取,这是自定义的一个获取城市方法,仅供参考!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import re import json # 通过execj解析js import execjs import requests from lxml import etree def search_city(response_second_text): """ 由于瓜子二手车网站的城市列表在网页源代码中无法获取,这是自定义的一个获取城市方法 :param response_second_text:第二次请求得到的源代码 :return:城市列表(包含城市的拼音和中文名) """ guazi_html = etree.HTML(response_second_text) script_js = guazi_html.xpath( "//script[3]/text()" )[ 0 ] city_search = re. compile (r '({.*?});' ) city = city_search.findall(script_js) # cityLeft获取城市的中文和英文名 cityLeft = city[ 0 ] # A_N大写字母 A_N = [ chr (i) for i in range ( 65 , 78 )] city_list = [] for i in A_N: try : city_left = json.loads(cityLeft)[i] for cityleft in city_left: # 城市拼音名 E_name = cityleft[ "domain" ] # 城市中文名 C_name = cityleft[ "name" ] cityleft_touple = (E_name, C_name) city_list.append(cityleft_touple) except : # 没有I开头的城市,捕获异常不用处理 pass # cityRight获取城市的中文和英文名 cityRight = city[ 1 ] M_Z = [ chr (i) for i in range ( 78 , 91 )] for i in M_Z: try : city_right = json.loads(cityRight)[i] for cityright in city_right: # 城市拼音名 E_name = cityright[ "domain" ] # 城市中文名 C_name = cityright[ "name" ] cityright_touple = (E_name, C_name) city_list.append(cityright_touple) except : # 没有O、U、V开头的城市,捕获异常不用处理 pass return city_list # 获取城市名称 response_second_text = response_second.text city_list = search_city(response_second_text) print (city_list) |
30
收起
正在回答 回答被采纳积分+1
2回答
4.入门主流框架Scrapy与爬虫项目实战
- 参与学习 人
- 提交作业 107 份
- 解答问题 1672 个
Python最广为人知的应用就是爬虫了,有趣且酷的爬虫技能并没有那么遥远,本阶段带你学会利用主流Scrapy框架完成爬取招聘网站和二手车网站的项目实战。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧