丁香园直通车抓取页面链接
一.首先利用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代码处加入循环,依次抓取)

模拟登录丁香园,并抓取论坛页面所有的人员基本信息与回复帖子内容相关推荐

  1. 实战大项目:模拟登录丁香园,并抓取论坛页面所有的人员基本信息与回复帖子内容----爬取第二步

    接着上一步模拟登录操作.学了两天的session 了没有搞定登录.还是回到selenium模拟登录爬取.但是验证码这一块,没有搞定,在文中用的人工辅助登录成功.代码太丑,实在是无言面对同行. impo ...

  2. 实战大项目:模拟登录丁香园,并抓取论坛页面所有的人员基本信息与回复帖子内容----登录第一步

    哎呀呀,先一步一步的来吧,我们知道要先登录才能查看全部的信息.好吧先去注册,记住账号和密码. 2.注册好了之后,先解决登录问题,可以看到有两个登录的地方,编号1.2. 打开网页,f12,先看看登录节点 ...

  3. python爬虫(四)——模拟登录丁香园

    实战 实战小项目:模拟登录丁香园,抓取论坛页面人员基本信息与回复帖子.丁香园论坛:http://www.dxy.cn/bbs/thread/626626#626626 思路 首先把登陆方式由扫码切换为 ...

  4. 爬虫入门学习(八)模拟登录丁香园论坛爬取用户信息

    爬虫入门学习(八)实战大项目模拟登录丁香园爬取信息 1 目标 2 思路 3 主要的技术点 3.1 模拟登录 3.2 抓取用户个人主页 4 完整代码 5 项目后期拓展 1 目标 模拟登录丁香园,并抓取页 ...

  5. Day7-模拟登录丁香园,爬取所有用户基本信息和回复内容

    最后一天了,趁着周末把DataWhale爬虫7天训练最后的task做出来了. 前几天的学习,从学习http,post和get两种请求方法开始,到学习简单urllib和requests请求一个网页进行简 ...

  6. python3爬虫——模拟登录丁香园并提取信息

    上一篇:模拟登录QQ邮箱 ps:在进行模拟登录时,输入账号密码后,会弹出验证码,目前还没有解决模拟验证,所以本教程需要进行人工验证. 代码: from selenium import webdrive ...

  7. python3爬虫模拟登录_python3爬虫——模拟登录丁香园并提取信息

    上一篇:模拟登录QQ邮箱 ps:在进行模拟登录时,输入账号密码后,会弹出验证码,目前还没有解决模拟验证,所以本教程需要进行人工验证. 代码: from selenium import webdrive ...

  8. 模拟登录丁香园获取全部回复

    采用selenium与xpath结合,先模拟登录再进行相关信息爬取,不过我不是仅仅把上次爬取丁香园的代码强加上去,我把取得源代码的自定义函数去掉,用了selenium的get函数,url用的是登陆后的 ...

  9. 模拟登录微博通,抓取新浪微博c#

    在前天我到公司就接到一个惊人的消息,说是新浪1.0的搜索接口关闭了,那我们的业务岂不是受很大影响,这个事太紧急了,大家在一起商讨该怎么办,跟新浪买2.0的接口肯定时间很长,最后决定抓取新浪网页的,新浪 ...

最新文章

  1. Ascii码 、16进制与 char
  2. 输入输出--公用继承
  3. Oracle执行计划详解
  4. Opencv dnn实现人类性别检测和年龄预测
  5. Linux的i2c驱动详解
  6. [react-native]react-native填坑笔记
  7. Redis学习与实战之列表
  8. 中国工业企业数据库(1998-2014年)
  9. vb精简版12M大小含msinet.ocx控件
  10. Python分词、情感分析工具SnowNLP使用方法
  11. 计算机系统的性能能被准确测量吗,信息技术 基于计算机的软件系统的性能测量与评级...
  12. 昆腾公司稍感安慰:向外扩展存储业务营收有所提升
  13. Typora任意更改样式
  14. sqlite内存模式
  15. 靠五、六流人才铸造的18万华为铁军
  16. 页面之间的跳转方式和参数传递以及路由和生命周期
  17. 提问的智慧!高手如何成长为高手,高手原来也是像我一样的菜鸟!
  18. 小程序Git问题:ERROR: credentials callback returned an invalid cred type解决方法
  19. springboot遇到的Invalid bound statement (not found): com.yc.service.UserService的众多坑
  20. ICP、ICP备案、ICP证是什么意思?有什么区别和联系?

热门文章

  1. 产品经理如何做项目管理?
  2. QGIS之十一导入CAD文件dwg/dxf
  3. ubuntu下使用GeographicLib库
  4. vMotion迁移报错’目标主机不支持虚拟机的当前硬件要求’
  5. 【neo4j】Neo4j-Cypher、py2neo常用操作整理
  6. 电脑开两个微信_电脑上登录两个微信或是多个微信?
  7. linux将时钟放在桌面上的,小技巧:Linux个性化面版时钟显示
  8. android phonegap 框架,基于Android SDK安装PhoneGap框架
  9. 嵌入式安卓开发:使用Camera2获取相机
  10. 【图像处理】Matlab实现视频处理系统