我决定爬房价。因为原本的教程,后面也是爬58同城,我也就跟着爬了。不过这次,我是基本都改了。
其实一开始很快就写好了,但是第二页开始就要输入验证码了。我查了下,说selenium可以规避这个问题,我就去安装了这个库。但是还有很多得需要提前安装。 (代码在最下面)
chromedriver
下载地址:http://chromedriver.storage.googleapis.com/index.html
我点开进去后,想着自己的谷歌是最新版本的就直接拉到最下面了。结果扑街了,2.9是2014年发布的。然后我浏览器是version67的,逐个点击了选择最新的,2.41。
解压在谷歌浏览器的目录下面。右键快捷方式 ,打开文件所在位置就好了。是一个Application的文件夹。先复制目录,等会会用到。
然后右击‘此电脑’(WIN10)–>属性–>左侧的高级系统设置–>环境变量–>看到下面有个系统变量。
点击新建,变量名随便写个’chromedrive’,然后浏览目录,选择刚才那个复制的目录(Application)。最后保存。
pyecharts
pyecharts是python的可视化库。我们需要按照这个库之后需要下载地图。有:
pip install echarts-countries-pypkg # 国家地图
pip install echarts-china-provinces-pypkg # 省的地图
pip install echarts-china-cities-pypkg # 市的地图
我只下载了市的,因为只用来爬广州的。
了解网页结构
比如我们想要抓取广州的数据,我们可以有:http://gz.58.com/ershoufang/?PGTID=0d200001-0000-3c62-f0fc-52c0419c4d8e&ClickID=2
嗯,看起来这个url杂乱无章。但是你点击第二页就会发现它是这样的:http://gz.58.com/ershoufang/pn2/?PGTID=0d30000c-0000-3859-164a-750fda376cbf&ClickID=1
然后第三页是这样的:http://gz.58.com/ershoufang/pn3/?PGTID=0d30000c-0000-3945-5408-f27d29243517&ClickID=1
emmm,都有pn,那就试下:http://gz.58.com/ershoufang/pn1/ 。成功了!!!这是第一页的网页。祝贺。
所有第i页就是:http://gz.58.com/ershoufang/pn + str(i)
接着按照之前的方法看我们要抓取的数据的标签分别是什么。


我们要抓地区还有每平方的价格。查看之后的结果是
/html/body/div[5]/div[5]/div[1]/ul/li[1]/div[2]/p[2]/span/a[2] (地区,district)
/html/body/div[5]/div[5]/div[1]/ul/li[1]/div[3]/p[2] (价格,price)
因为位于的<div>
不同,所以在抓取的时候我们还是要先抓<li>
开始爬数据
from bs4 import BeautifulSoup
from selenium import webdriver
from pyecharts import Map
import re
driver = webdriver.Chrome(executable_path='C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe')
map_district = {}
这是要用的package。 <