爬虫实战——简书文章爬取(selenium+Chrome)

本文介绍了使用selenium和Chrome浏览器爬取简书文章的全过程,包括思路分析、完整代码和总结。在爬取过程中,通过js模拟滚动加载更多文章,遇到阅读更多按钮时模拟点击。数据存储采用MySQL,但作者认为MongoDB可能更适合。最后,作者探讨了URL去重方法,并欢迎读者提供优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

本次爬虫使用了selenium,结合Chrome浏览器进行页面爬取。数据存储用的是MySQL数据库,个人感觉用MongoDB更好一些,但是最近在学MySQL数据库,所以就果断用它了。

思路分析

起始URL:https://www.jianshu.com/
思路比较简单,就是先访问起始URL(简书的主页),再找到文章的URL,打开该URL,爬取想要文章的信息即可。思路虽然简单,但是我却遇到了不少的问题,最大的问题就是,如果你只是打开简书的主页而不滚动滚动条,页面中文章的URL是有限的,也就是说只能爬取页面中文章的URL,要想出现更多的文章必须要滚动滚动条,我的处理方法时,写一条js代码,当页面的URL都爬完后,执行一次js代码,让滚动条到达页面的底部。

window.scrollTo(0,document.body.scrollHeight)

但是,在多次滚动滚动条后,会出现阅读更多的按钮,此时再滚动滚动条就已经没有用了,所以,要找到这个按钮并且模拟点击。

完整代码

# !/usr/bin/env python
# —*— coding: utf-8 —*—
# @Time:    2020/2/5 20:21
# @Author:  Martin
# @File:    jianshu.py
# @Software:PyCharm
from selenium import webdriver
from lxml import etree
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
import pymysql


class JianshuSpider(object):
    driver_path = r'./chromedriver.exe'
    # 爬取的文章数目
    article_num = 50
    # 文章索引
    article_index = 1
    url_set = set()

    def __init__(self):
        self.driver = webdriver.Chrome(executable_path=JianshuSpider.driver_path)
        self.url = 'https://www.jianshu.com'
        self.conn = pymysql.connect
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值