模拟登录丁香园,并抓取论坛页面所有的人员基本信息与回复帖子内容
丁香园直通车抓取页面链接
一.首先利用selenium登录网站,此部分重点:
1.切换到账号密码表单登录,我采用了利用style将display值变为block,代码如下:
js1 = 'document.querySelector("#j_loginTab1").style.display="none";'browser.execute_script(js1)time.sleep(1)js2 = 'document.querySelector("#j_loginTab2").style.display="block";'browser.execute_script(js2)
2.定位到账号,密码input位置并输入已注册好的帐号密码,点击登录,代码如下:
input_name = browser.find_element_by_name('username')input_name.clear()input_name.send_keys(********')input_pass = browser.find_element_by_name('password')input_pass.clear()input_pass.send_keys('********')browser.find_element_by_xpath('//*[@class="form__button"]/button').click()
此步骤操作多了会出现验证,验证方式我遇到过按顺序点击图片中的汉字、滑动图片块等;本文先跳过,后期补上这一部分。
3.登录成功后,我们开始抓取页面,利用xpath定位到抓取内容的位置;
user = tree.xpath('//div[@id="postcontainer"]//div[@class="auth"]/a/text()')content = tree.xpath('//td[@class="postbody"]')
4.将抓取内容存入文件。
整体代码如下
# -*- coding:utf-8 -*-
import requests, json, re, random,time
from bs4 import BeautifulSoup
from selenium import webdriver
from lxml import etreeclass getUrl(object):"""docstring for getUrl"""def __init__(self):self.headers={"Connection": "keep-alive", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 " "(KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Encoding": "gzip, deflate, sdch", "Accept-Language": "zh-CN,zh;q=0.8"};def run(self):browser = webdriver.Chrome()browser.get('https://auth.dxy.cn/accounts/login?service=http://www.dxy.cn/bbs/index.html')time.sleep(1)#切换账号密码登录表单js1 = 'document.querySelector("#j_loginTab1").style.display="none";'browser.execute_script(js1)time.sleep(1)js2 = 'document.querySelector("#j_loginTab2").style.display="block";'browser.execute_script(js2)#输入账号密码input_name = browser.find_element_by_name('username')input_name.clear()input_name.send_keys('*********')input_pass = browser.find_element_by_name('password')input_pass.clear()input_pass.send_keys('*******')browser.find_element_by_xpath('//*[@class="form__button"]/button').click()#此步骤应该有验证码,先跳过time.sleep(10)cookie = browser.get_cookies()cookie_dict = {i['name']:i['value'] for i in cookie}#转到抓取页面browser.get("http://www.dxy.cn/bbs/thread/626626#626626"); html = browser.page_sourcetree = etree.HTML(html)user = tree.xpath('//div[@id="postcontainer"]//div[@class="auth"]/a/text()')content = tree.xpath('//td[@class="postbody"]')for i in range(0,len(user)):result = user[i].strip()+":"+content[i].xpath('string(.)').strip()#写入文件dir_file = open("DXY_records.txt",'a', encoding="utf-8")dir_file.write(result+"\n")dir_file.write('*' * 80+"\n")dir_file.close()print('*' * 5 +"抓取结束"+'*' * 5)if __name__ == '__main__':geturl = getUrl()geturl.run()
运行结果如下,一共有27个用户回复(此代码只适用于回复只有单页的情况,若是有多页回复,需在获取页面html代码处加入循环,依次抓取)
模拟登录丁香园,并抓取论坛页面所有的人员基本信息与回复帖子内容相关推荐
- 实战大项目:模拟登录丁香园,并抓取论坛页面所有的人员基本信息与回复帖子内容----爬取第二步
接着上一步模拟登录操作.学了两天的session 了没有搞定登录.还是回到selenium模拟登录爬取.但是验证码这一块,没有搞定,在文中用的人工辅助登录成功.代码太丑,实在是无言面对同行. impo ...
- 实战大项目:模拟登录丁香园,并抓取论坛页面所有的人员基本信息与回复帖子内容----登录第一步
哎呀呀,先一步一步的来吧,我们知道要先登录才能查看全部的信息.好吧先去注册,记住账号和密码. 2.注册好了之后,先解决登录问题,可以看到有两个登录的地方,编号1.2. 打开网页,f12,先看看登录节点 ...
- python爬虫(四)——模拟登录丁香园
实战 实战小项目:模拟登录丁香园,抓取论坛页面人员基本信息与回复帖子.丁香园论坛:http://www.dxy.cn/bbs/thread/626626#626626 思路 首先把登陆方式由扫码切换为 ...
- 爬虫入门学习(八)模拟登录丁香园论坛爬取用户信息
爬虫入门学习(八)实战大项目模拟登录丁香园爬取信息 1 目标 2 思路 3 主要的技术点 3.1 模拟登录 3.2 抓取用户个人主页 4 完整代码 5 项目后期拓展 1 目标 模拟登录丁香园,并抓取页 ...
- Day7-模拟登录丁香园,爬取所有用户基本信息和回复内容
最后一天了,趁着周末把DataWhale爬虫7天训练最后的task做出来了. 前几天的学习,从学习http,post和get两种请求方法开始,到学习简单urllib和requests请求一个网页进行简 ...
- python3爬虫——模拟登录丁香园并提取信息
上一篇:模拟登录QQ邮箱 ps:在进行模拟登录时,输入账号密码后,会弹出验证码,目前还没有解决模拟验证,所以本教程需要进行人工验证. 代码: from selenium import webdrive ...
- python3爬虫模拟登录_python3爬虫——模拟登录丁香园并提取信息
上一篇:模拟登录QQ邮箱 ps:在进行模拟登录时,输入账号密码后,会弹出验证码,目前还没有解决模拟验证,所以本教程需要进行人工验证. 代码: from selenium import webdrive ...
- 模拟登录丁香园获取全部回复
采用selenium与xpath结合,先模拟登录再进行相关信息爬取,不过我不是仅仅把上次爬取丁香园的代码强加上去,我把取得源代码的自定义函数去掉,用了selenium的get函数,url用的是登陆后的 ...
- 模拟登录微博通,抓取新浪微博c#
在前天我到公司就接到一个惊人的消息,说是新浪1.0的搜索接口关闭了,那我们的业务岂不是受很大影响,这个事太紧急了,大家在一起商讨该怎么办,跟新浪买2.0的接口肯定时间很长,最后决定抓取新浪网页的,新浪 ...
最新文章
- 机器学习XGBoost——后面的明天更
- 【面试招聘】程序员面试完全指南
- IIS6.0官方技术必读
- 西瓜书学习记录-决策树(第四章)
- mysql stragg_如何在MySQL中將子查詢行的結果顯示為一列?
- windbg查询内存泄笔记
- ASP.NET服务器控件对应的HTML标签
- CentOS6.8下MySQL数据库忘记root密码解决方法
- WOJ2230 树上修改1(倍增/树剖(树剖写法见下篇))
- iis如何连接mysql_iis怎么连接数据库
- arduino 操纵杆_使用Arduino Leonardo开发板制作操纵杆游戏控制器
- 【U8】凭证上修改使用自定义项科目的辅助信息
- Qt多线程http下载器之一:仿百度网盘的http下载器
- openscad螺栓数据生成2
- 富文本编辑器 图片base64 图片替换
- JavaWeb开发重定向与转发
- STM32模拟IIC驱动sht30温湿度传感器
- 直接内存or系统内存
- sql语句之字符串截取(substring_index)
- 如何进行渗透测试XSS跨站攻击检测
热门文章
- 计算机一级模块数量填什么,2015年全国各地职计算机考试初级,中级,(副)高级 通过模块数量.doc...
- 前端面试官问Promise,怎样回答拿高分
- 正点原子imx6ull 4.3寸RGBLCD 800*480 ATK-4384触摸屏驱动芯片GT1511或GT9147问题
- 嵌入式面试题之单片机知识
- 图片和图形之减少透支(17)
- hdu 1276 士兵队列训练问题
- MySQL字符集及配置
- C++ 6.程序流程结构—选择结构(嵌套if语句、经典问题三只小猪称体重、三目运算符、switch语句)
- calendar java 线程安全_SimpleDateFormat,Calendar 线程非安全的问题
- URL的各部分含义详解