今天想做一个58同城的爬虫,然后到页面分析一下链接,发现58同城的链接的有些参数是由js动态生成的,然后我就想偷懒了。(当然其实去js文件中找到生成式并不难),但我就是不想去找。然后就想到了selenium,各种工具都常拿出来溜溜,才能用的好!
python + selenium + (head_less)Chrome,然后用BeautifulSoup解析数据,完成了。
我们来一步步的看,首先我们要生成一个驱动器的对象吧
from selenium import webdriver
options = webdriver.ChromeOptions()
options.set_headless()
# 无头
options.add_argument('--diable-gpu')
# 禁用gpu
driver = webdriver.Chrome(options=options)
# 生成了一个无头的Chrome的驱动器对象
对了,我们还是把我们的目标截图看一下吧!
框起来的部分是有js文件动态生成的参数,我们的目标是箭头指向的部分。
好了,目标给你们看了,像这样的页面一共有70页,每页有60个房子的信息(别说我骗你只有4200条数据不是万级数据,那你可以换城市呀!)
首先我们实现这个页面的爬取,看代码:
content = driver.page_source.encode('utf-8')
# 获取页面资源
Soup = BeautifulSoup(content,'lxml')
# 用BeautifulSoup库进行解析,结合BeautifulSoup
li_list = Soup.find(attrs={'class':'content'}).find_next(attrs={'class':'listUl'}).find_all('li')
# 解析
for li in li_list:
try:
if li.has_attr('logr'):
# 因为渲染过的页面上还有一种公寓的信息&#