丁香园直通车抓取页面链接
一.首先利用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. 机器学习XGBoost——后面的明天更
  2. 【面试招聘】程序员面试完全指南
  3. IIS6.0官方技术必读
  4. 西瓜书学习记录-决策树(第四章)
  5. mysql stragg_如何在MySQL中將子查詢行的結果顯示為一列?
  6. windbg查询内存泄笔记
  7. ASP.NET服务器控件对应的HTML标签
  8. CentOS6.8下MySQL数据库忘记root密码解决方法
  9. WOJ2230 树上修改1(倍增/树剖(树剖写法见下篇))
  10. iis如何连接mysql_iis怎么连接数据库
  11. arduino 操纵杆_使用Arduino Leonardo开发板制作操纵杆游戏控制器
  12. 【U8】凭证上修改使用自定义项科目的辅助信息
  13. Qt多线程http下载器之一:仿百度网盘的http下载器
  14. openscad螺栓数据生成2
  15. 富文本编辑器 图片base64 图片替换
  16. JavaWeb开发重定向与转发
  17. STM32模拟IIC驱动sht30温湿度传感器
  18. 直接内存or系统内存
  19. sql语句之字符串截取(substring_index)
  20. 如何进行渗透测试XSS跨站攻击检测

热门文章

  1. 计算机一级模块数量填什么,2015年全国各地职计算机考试初级,中级,(副)高级 通过模块数量.doc...
  2. 前端面试官问Promise,怎样回答拿高分
  3. 正点原子imx6ull 4.3寸RGBLCD 800*480 ATK-4384触摸屏驱动芯片GT1511或GT9147问题
  4. 嵌入式面试题之单片机知识
  5. 图片和图形之减少透支(17)
  6. hdu 1276 士兵队列训练问题
  7. MySQL字符集及配置
  8. C++ 6.程序流程结构—选择结构(嵌套if语句、经典问题三只小猪称体重、三目运算符、switch语句)
  9. calendar java 线程安全_SimpleDateFormat,Calendar 线程非安全的问题
  10. URL的各部分含义详解