看我怎么扒掉CSDN首页的底裤(python selenium+phantomjs爬取CSDN首页内容)

简介: 版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/79162357 这里只是学习一下动态加载页面内容的抓取,并不适用于所有的页面。
版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/79162357

这里只是学习一下动态加载页面内容的抓取,并不适用于所有的页面。

使用到的工具就是python selenium和phantomjs,另外调试的时候还用了firefox的geckodriver.exe。

首先学习了下怎么在firefox中动态调试内容和抓取元素,这个其实在网页自动化测试中相当实用,想想测试同学每天重复点击业务页面和输入内容得有多痛苦吧。

一开始进展十分不顺利,因为phantomjs和firefox的调试加载的动态内容都不能在源码中有任何的体现,只能找出第一次get页面的内容,条目就30条左右,各种下拉加载,各种研究源码,均以失败告终。

最终我用chrome的开发工具找到了页面内容加载的api地址:

https://www.csdn.net/api/articles?type=more&category=home&shown_offset=0
后边就好办了,先用phantom加载首页,然后去访问api地址,这样循环访问,直到api的status为false,首页推荐的底裤就基本上扒掉了……

代码如下:

# coding=utf8
import json
import os
import sys

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

reload(sys)
sys.setdefaultencoding("utf-8")

if os.path.exists("csdn_home.txt"):
    os.remove("csdn_home.txt")
    print "csdn_home.txt removed"

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap[
    "phantomjs.page.settings.userAgent"] = "Mozilla / 5.0 (Windows NT 10.0 Win64 x64) AppleWebKit / 537.36 (KHTML, like Gecko) Chrome / 63.0.3 239.132 Safari / 537.36"
br = webdriver.PhantomJS()
br.get("https://www.csdn.net/")
data = br.find_elements_by_xpath('//ul/li[@class="clearfix"]/div/h2/a')
print len(data)
with open("csdn_home.txt", "a") as f:
    for title in data:
        print title.text
        f.write(title.text + '\n')
        print title.get_attribute('href')
        f.write(title.get_attribute('href') + '\n')

    while True:
        br.get("https://www.csdn.net/api/articles?type=more&category=home&shown_offset=0")
        data = json.loads(br.find_element_by_xpath('//pre').text)
        if data["status"] == "false":
            break
        else:
            for i in data["articles"]:
                print i["title"]
                f.write(i["title"] + '\n')
                print i["url"]
                f.write(i["url"] + '\n')
f.close()
br.quit()  # 退出phantomjs,否则phantomjs会一直留有进程,占用cpu和内存




目录
相关文章
|
29天前
|
数据安全/隐私保护 Python
python之自动化进入CSDN
python之自动化进入CSDN
22 0
|
3月前
|
数据安全/隐私保护 Python
python之自动化进入CSDN
python之自动化进入CSDN
35 1
|
4月前
|
数据采集 Web App开发 存储
Python-数据爬取(爬虫)
【7月更文挑战第24天】
82 7
|
4月前
|
数据采集 机器学习/深度学习 算法
Python-数据爬取(爬虫)
【7月更文挑战第23天】
65 5
|
4月前
|
数据采集 存储 Web App开发
Python-数据爬取(爬虫)
【7月更文挑战第15天】
195 3
|
5月前
|
Web App开发 Python Windows
经验大分享:PYTHON爬取66影视的电影下载链接,有搜索功能
经验大分享:PYTHON爬取66影视的电影下载链接,有搜索功能
134 2
|
5月前
|
存储 XML 数据处理
Python网络实践:去哪儿旅游数据爬取指南
Python网络实践:去哪儿旅游数据爬取指南
165 1
|
5月前
|
数据采集 JSON 算法
使用Python爬取华为市场APP应用进行分析
这个网站也是作者最近接触到的一个APP应用市场类网站。讲实话,还是蛮适合新手朋友去动手学习的。毕竟爬虫领域要想进步,还是需要多实战、多分析!该网站中的一些小细节也是能够锻炼分析能力的,也有反爬虫处理。甚至是下载APP的话在Web端是无法拿到APK下载的直链,需要去APP端接口数据获取
|
5月前
|
程序员 Python
老程序员分享:python爬取电影网站信息并写入文件
老程序员分享:python爬取电影网站信息并写入文件
53 0
|
5月前
|
XML 数据采集 存储
经验大分享:python爬取喜马拉雅节目生成RSSFeed
经验大分享:python爬取喜马拉雅节目生成RSSFeed
80 0

热门文章

最新文章

下一篇
无影云桌面