どうやってCSDNのトップページのパンツをすり抜けるか見てみましょう(python selenium+phantomjsはCSDNのトップページの内容を登ります)


ここでは、ページの内容を動的にロードするキャプチャを学習するだけで、すべてのページには適用されません.
使用するツールは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 + '
') print title.get_attribute('href') f.write(title.get_attribute('href') + '
') 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"] + '
') print i["url"] f.write(i["url"] + '
') f.close() br.quit() # phantomjs, phantomjs , cpu