博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用selenium爬虫模拟浏览器访问CSDN博客
阅读量:4299 次
发布时间:2019-05-27

本文共 2213 字,大约阅读时间需要 7 分钟。

利用selenium爬虫模拟浏览器访问博客

import timeimport urllibimport refrom urllib.request import  urlopenfrom urllib  import requestfrom bs4 import BeautifulSoupfrom selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsdef visit_article(articles):    chrome_options = Options()    chrome_options.add_argument('--no-sandbox')    chrome_options.add_argument('--disable-dev-shm-usage')    # chrome_options.add_argument('--headless')    driver = webdriver.Chrome(options=chrome_options)    #driver = webdriver.Firefox()    time.sleep(2)    # driver.get('https://blog.csdn.net/u011503666/article/details/111756868')    for article in articles:        driver.get(article)        time.sleep(2)        driver.refresh()        time.sleep(5)    driver.quit()def get_page_nums(page_url):    page_num = 0    while True:        page_num += 1        req = request.Request(f'{page_url}/article/list/{page_num}')        user_agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64) '\        'AppleWebKit/537.36 (KHTML, like Gecko) '\        'Chrome/45.0.2454.101 Safari/537.36'        req.add_header('User-Agent', user_agent)        html = urlopen(req)        bs_obj = BeautifulSoup(html.read(), "html.parser")        article_div = bs_obj.find("div", {
"class":"article-list"}) if not article_div: return page_num - 1def get_page_article_urls(page_url): req = request.Request(page_url) user_agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64) '\ 'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36' req.add_header('User-Agent', user_agent) html = urlopen(req) bs_obj = BeautifulSoup(html.read(), "html.parser") articles = list() article_div = bs_obj.find("div", {
"class":"article-list"}) for articlelist in article_div.findAll('a'): if 'href' in articlelist.attrs: articles.append(articlelist.attrs['href']) return articlesdef main(): page_num = get_page_nums('https://blog.csdn.net/u011503666') print(f'page_num: {page_num}') for x in range(1, page_num + 1): articles = get_page_article_urls( f'https://blog.csdn.net/u011503666/article/list/{x}') visit_article(articles)if __name__ == '__main__': main()
你可能感兴趣的文章
suse如何修改ssh端口为2222?
查看>>
详细理解“>/dev/null 2>&1”
查看>>
suse如何创建定时任务?
查看>>
suse搭建ftp服务器方法
查看>>
centos虚拟机设置共享文件夹并通过我的电脑访问[增加smbd端口修改]
查看>>
文件拷贝(IFileOperation::CopyItem)
查看>>
MapReduce的 Speculative Execution机制
查看>>
大数据学习之路------借助HDP SANDBOX开始学习
查看>>
Hadoop基础学习:基于Hortonworks HDP
查看>>
为什么linux安装程序 都要放到/usr/local目录下
查看>>
Hive安装前扫盲之Derby和Metastore
查看>>
永久修改PATH环境变量的几种办法
查看>>
大数据学习之HDP SANDBOX开始学习
查看>>
Hive Beeline使用
查看>>
Centos6安装图形界面(hdp不需要,hdp直接从github上下载数据即可)
查看>>
CentOS7 中把yum源更换成163源
查看>>
关于yum Error: Cannot retrieve repository metadata (repomd.xml) for repository:xxxxxx.
查看>>
linux下载github中的文件
查看>>
HDP Sandbox里面git clone不了数据(HTTP request failed)【目前还没解决,所以hive的练习先暂时搁置了】
查看>>
动态分区最佳实践(一定要注意实践场景)
查看>>