Python网页爬虫selenium,chromedriver之一

版权声明:本文为Zhang Phil原创文章,请不要转载! https://blog.csdn.net/zhangphil/article/details/88572027

首先需要安装Python的selenium:

pip install selenium

然后需要安装chromedriver驱动器,chromedriver下载地址:

http://chromedriver.storage.googleapis.com/index.html

下载后解压即可:

本例中爬取的网站站点具有分页特性。原理是先把分页的数据循环读取,读到每一个分页内容后,解析里面包含的子页面,再循环访问。

特意去掉了本例具体爬取的网站站点名称。

import time
import requests
from selenium import webdriver
import random
import logging

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s - %(levelname)s - %(message)s')

TIME = 5

#访问具体链接地址。
def http_get(page_number, page_id):
    option = webdriver.ChromeOptions()
    option.set_headless()  # 不打开浏览器窗口。
    browser = webdriver.Chrome(
        options=option, executable_path=r"D:\program\chromedriver_win32\chromedriver.exe")
    browser.set_page_load_timeout(60)  # 页面加载最大时间为60秒,否则超时。
    try:
        addr = "https://*******************/details/"+str(page_id)

        browser.get(addr)
        t = browser.title

        time.sleep(random.randint(0, TIME))

        browser.close()
        logging.info("访问第"+str(page_number)+"页-"+t+",结束 - "+addr)
    except:
        logging.debug("访问第"+str(page_number)+"页-,错误-"+addr)
        browser.close()


#page_number,分页的编码。
def htttp_page(page_number):
    u = "https://**********************/list/"+str(page_number)+"?"
    r = requests.get(u)

    logging.info("访问第"+str(page_number)+"页")

    r.raise_for_status()
    tag = "data-articleid="
    parts = r.text.split()

    ids = []

    for part in parts:
        if part.startswith(tag):
            id = part.split(r'"')[1]
            ids.append(id)

    random.shuffle(ids)

    for id in ids:
        http_get(page_number, id)
        time.sleep(random.randint(0, TIME))


while True:
    array = list(range(1, 41))
    random.shuffle(array)
    print("随机后的页码:")
    print(array)

    for i in array:
      htttp_page(i)
      time.sleep(random.randint(0, TIME))

注意:本文是研究性质,不是用来DO EVIL

猜你喜欢

转载自blog.csdn.net/zhangphil/article/details/88572027