由于瓜子二手车网站的城市列表在网页源代码中无法获取,这是自定义的一个获取城市方法,仅供参考!
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积分~
来为老师/同学的回答评分吧
0 星