Python网页爬虫selenium,chromedriver之一

61 篇文章 2 订阅

首先需要安装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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangphil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值