文章目录

  • task01
    • 任务预览
    • code_datawhale01_douban_top250
    • result
  • task02
    • 任务预览
    • code_datawhale02-01_dxybbs_reply_bs4.py
    • result
    • code_datawhale02-01_dxybbs_reply_xpath.py
    • result
  • task03
    • 任务预览
    • code_datawhle03-01_163mail_login.py
    • result
    • code_datawhle03-02_163mail_login_xici.py
    • result
  • task4
    • 任务预览
    • code_datawhale04_dxybbs_reply_login.py
    • result
  • 扩展
  • END

task01

任务预览

1.学习get与post请求,尝试使用requests或者是urllib用get方法向https://www.baidu.com/发出一个请求,并将其返回结果输出。
2.如果是断开了网络,再发出申请,结果又是什么。了解申请返回的状态码。
3.了解什么是请求头,如何添加请求头。
4.学习什么是正则表达式并尝试一些正则表达式并进行匹配。
5.结合requests、re两者的内容爬取https://movie.douban.com/top250里的内容。
要求抓取名次、影片名称、国家、导演等字段。————————————————
版权声明:本文为CSDN博主「Qinchuyan_2019」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42795083/article/details/98655421

code_datawhale01_douban_top250

# encoding:utf-8# 结合requests、re两者的内容爬取https://movie.douban.com/top250里的内容。要求抓取
# 名次、
# 影片名称、
# 国家、
# 导演等字段。
import requests, re, json
from requests.exceptions import RequestException# 得到url
def get_one_page(url):try:res = requests.get(url)print (str(res) + '开始开车,请坐稳')if res.status_code == 200:return res.textreturn Noneexcept RequestException:return None# "number": item[0],  # 名次
# "name": item[1],  # 影片名称# "describe": content,  # 描述# "star": item[3],  # 评分
# "evaluate": item[4],  # 评分人数
# "title": item[5]  # 主旨
# https://deerchao.net/tutorials/regex/regex.htm
# 正则三十分钟入门
# \d+匹配1个或更多连续的数字。这里的+是和*类似的元字符,不同的是*匹配重复任意次(可能是0次),而+则匹配重复1次或更多次。
# 这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:
# # a.*?b匹配最短的,以a开始,以b结束的字符串。# re.S
# 在字符串中,包含换行符\n,在这种情况下:
# 如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始。
# 而使用re.S参数以后,正则表达式会将这个字符串作为一个整体,在整体中进行匹配。# re.finall
# 正则 re.findall  的简单用法(返回string中所有与pattern相匹配的全部字串,返回形式为数组)# <em class="">(\d+)</em>  # 名次 <em class="">1</em>
# <span class="title">(.*?)</span> # 影片名称 <span class="title">肖申克的救赎</span># 描述 Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
# str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
# num -- 分割次数。默认为 -1, 即分隔所有
# https://www.runoob.com/python/att-string-split.html# re是正则的表达式,sub是substitute表示替换
# re.sub(pattern, repl, string, count=0, flags=0)
# pattern:表示正则表达式中的模式字符串;
# repl:被替换的字符串(既可以是字符串,也可以是函数);
# string:要被处理的,要被替换的字符串;
# count:匹配的次数, 默认是全部替换
# flags:具体用处不详模式,替换词, 被替换词, 替换的个数,
# 其中三个必选参数:pattern, repl, string
# 两个可选参数:count, flags
# https://www.jianshu.com/p/8c1d1a38f9b9
"""
<p class="">(.*?)</p> # 描述
<p class="">导演: 弗兰克·德拉邦特 Frank Darabont&nbsp;&nbsp;&nbsp;主演: 蒂姆·罗宾斯 Tim Robbins /...<br>1994&nbsp;/&nbsp;美国&nbsp;/&nbsp;犯罪 剧情</p>
<p class="">导演: 陈凯歌 Kaige Chen&nbsp;&nbsp;&nbsp;主演: 张国荣 Leslie Cheung / 张丰毅 Fengyi Zha...<br>1993&nbsp;/&nbsp;中国大陆 香港&nbsp;/&nbsp;剧情 爱情 同性</p>                        """# <span class="rating_num" property="v:average">(.*?)</span>  # 评分
# <span class="rating_num" property="v:average">9.7</span># <span>(.*?)</span> # 评分人数  # <span>1554769人评价</span># <span class="inq">(.*?)</span> # 主旨  # <span class="inq">希望让人自由。</span>def parse_one_html(html):# regex = '<em class="">(\d+)</em>.*?<span class="title">(.*?)</span>.*?<p class="">(.*?)</p>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(.*?)</span>.*?<span class>)'regex = '<em class="">(\d+)</em>.*?<span class="title">(.*?)</span>.*?<p class="">(.*?)</p>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(.*?)</span>.*?<span class="inq">(.*?)</span>'pattern = re.compile(regex,re.S)items = re.findall(pattern,html)for item in items:content = ""for every_list in item[2].split():content=content+"".join(every_list)content=re.sub('&nbsp;',' ', content)content=re.sub('<br>',' ', content)dict = {"number":item[0],  # 名次"name":item[1],    # 影片名称"describe":content,  # 描述"star":item[3],      # 评分"evaluate":item[4],  # 评分人数"title":item[5]      # 主旨}with open('result_douban_top250.txt', 'a', encoding='utf-8') as f:f.write(json.dumps(dict,ensure_ascii=False) + '\n')print("车已到达,获取成功...请下车...")def main(start):url = 'https://movie.douban.com/top250'if start != 0:url = 'https://movie.douban.com/top250?start=' + str(start)+' &filter'html = get_one_page(url)parse_one_html(html)if __name__ == '__main__':# for i in range(10):for i in range(3):main( i * 25 )

result

{"number": "1", "name": "肖申克的救赎", "describe": "导演:弗兰克·德拉邦特FrankDarabont   主演:蒂姆·罗宾斯TimRobbins/... 1994 / 美国 / 犯罪剧情", "star": "9.7", "evaluate": "1554769人评价", "title": "希望让人自由。"}
{"number": "2", "name": "霸王别姬", "describe": "导演:陈凯歌KaigeChen   主演:张国荣LeslieCheung/张丰毅FengyiZha... 1993 / 中国大陆香港 / 剧情爱情同性", "star": "9.6", "evaluate": "1149200人评价", "title": "风华绝代。"}
{"number": "3", "name": "这个杀手不太冷", "describe": "导演:吕克·贝松LucBesson   主演:让·雷诺JeanReno/娜塔莉·波特曼... 1994 / 法国 / 剧情动作犯罪", "star": "9.4", "evaluate": "1402460人评价", "title": "怪蜀黍和小萝莉不得不说的故事。"}
{"number": "4", "name": "阿甘正传", "describe": "导演:罗伯特·泽米吉斯RobertZemeckis   主演:汤姆·汉克斯TomHanks/... 1994 / 美国 / 剧情爱情", "star": "9.5", "evaluate": "1211640人评价", "title": "一部美国近现代史。"}
{"number": "5", "name": "美丽人生", "describe": "导演:罗伯托·贝尼尼RobertoBenigni   主演:罗伯托·贝尼尼RobertoBeni... 1997 / 意大利 / 剧情喜剧爱情战争", "star": "9.5", "evaluate": "709505人评价", "title": "最美的谎言。"}
{"number": "6", "name": "泰坦尼克号", "describe": "导演:詹姆斯·卡梅隆JamesCameron   主演:莱昂纳多·迪卡普里奥Leonardo... 1997 / 美国 / 剧情爱情灾难", "star": "9.4", "evaluate": "1153608人评价", "title": "失去的才是永恒的。 "}
{"number": "7", "name": "千与千寻", "describe": "导演:宫崎骏HayaoMiyazaki   主演:柊瑠美RumiHîragi/入野自由Miy... 2001 / 日本 / 剧情动画奇幻", "star": "9.3", "evaluate": "1244793人评价", "title": "最好的宫崎骏,最好的久石让。 "}
{"number": "8", "name": "辛德勒的名单", "describe": "导演:史蒂文·斯皮尔伯格StevenSpielberg   主演:连姆·尼森LiamNeeson... 1993 / 美国 / 剧情历史战争", "star": "9.5", "evaluate": "629276人评价", "title": "拯救一个人,就是拯救整个世界。"}
{"number": "9", "name": "盗梦空间", "describe": "导演:克里斯托弗·诺兰ChristopherNolan   主演:莱昂纳多·迪卡普里奥Le... 2010 / 美国英国 / 剧情科幻悬疑冒险", "star": "9.3", "evaluate": "1199529人评价", "title": "诺兰给了我们一场无法盗取的梦。"}
{"number": "10", "name": "忠犬八公的故事", "describe": "导演:莱塞·霍尔斯道姆LasseHallström   主演:理查·基尔RichardGer... 2009 / 美国英国 / 剧情", "star": "9.3", "evaluate": "803263人评价", "title": "永远都不能忘记你所爱的人。"}
{"number": "11",......
....

task02

任务预览

1.学习beautifulsoup,并使用beautifulsoup提取内容;使用beautifulsoup提取丁香园论坛的回复内容。(丁香园:http://www.dxy.cn/bbs/thread/626626#626626 )
2.学习xpath,使用lxml+xpath提取内容;使用xpath提取丁香园论坛的回复内容。(http://www.dxy.cn/bbs/thread/626626#626626)** beautifulsoup与xpath简介**
用正则表达式提取页面信息非常繁琐且易出错,而对于网页节点来说,它可以定义id、class或其他属性,且节点间还有层次关系,在网页中可以通过XPath或CSS选择器来定位一个或多个节点。所以在页面解析时,利用XPath或CSS选择器来提取某个节点,然后再调用相应方法获取它的正文内容或者属性,就可以提取到我们需要的信息了。
在python中,要实现上述操作,可使用解析库beautifulsoup、lxml。————————————————
版权声明:本文为CSDN博主「Qinchuyan_2019」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42795083/article/details/98883988

code_datawhale02-01_dxybbs_reply_bs4.py

# encoding:utf-8
import requests, json
from bs4 import BeautifulSoup# 利用reqests抓取网页def get_html(url):HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0';Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"}response = requests.get(url,headers = HEADERS)response.encoding = 'utf-8'if response.status_code == 200:# print(response.text)return response.textreturn# 一个灵活又方便的HTML解析库,把html 处理成一个文档树的形式,处理高效,支持多种解析器,利用它不使用正则表达式也能抓取网页内容。
"""
<td class="postbody">我遇到一个“怪”病人,向大家请教。她,42岁。反复惊吓后晕厥30余年。每次受响声惊吓后发生跌倒,短暂意识丧失。无逆行性遗忘,无抽搐,无口吐白沫,无大小便失禁。多次跌倒致外伤。婴儿时有惊厥史。入院查体无殊。ECG、24小时动态心电图无殊;头颅MRI示小软化灶;脑电图无殊。入院后有数次类似发作。请问该患者该做何诊断,还需做什么检查,治疗方案怎样?</td><td class="postbody">从发作的症状上比较符合血管迷走神经性晕厥,直立倾斜试验能协助诊断。在行直立倾斜实验前应该做常规的体格检查、ECG、UCG、holter和X-ray胸片除外器质性心脏病。
<br>
<br>贴一篇“口服氨酰心安和依那普利治疗血管迷走性晕厥的疗效观察”
<br>作者:林文华 任自文 丁燕生
<br>
<br>
<a href="http://www.ccheart.com.cn/ccheart_site/Templates/jieru/200011/1-1.htm" target="_blank" class="ilink" rel="nofollow">http://www.ccheart.com.cn/ccheart_site/Templates/jieru/200011/1-1.htm</a></td>
"""# python 字符串追加实例
# https://www.jb51.net/article/165832.htm
# 爬虫:python之BeautifulSoup(lxml)
# https://blog.csdn.net/zhangzejia/article/details/79658221
# https://blog.csdn.net/hellocsz/article/details/79780654
# lxml简明教程
# https://www.cnblogs.com/ConnorShip/p/9744223.html
# json.dumps()和json.loads()
# python3 中的append()和extend()用法
# https://blog.csdn.net/qq_41936849/article/details/81018566def get_info(html):datas = ""  # 用来存放获取的用户名和评论soup = BeautifulSoup(html,'lxml')infos = soup.find_all("tbody")# print (infos)for data in infos:try:userid = data.find("div", class_="auth").get_text(strip = True)# print(userid)content = data.find("td",class_ = "postbody").get_text(strip = True)# print(content)# datas.append((userid,content))datas += userid + '\n' + content + '\n'except:passwith open('result_dxybbs_reply_bs4.txt', 'w', encoding='utf-8') as f:f.write(str(datas) + '\n')print(datas)print("您的评论已入库,请小心使用...")
def main():url = "http://www.dxy.cn/bbs/thread/626626#626626"html = get_html(url)infos = get_info(html)if __name__ == '__main__':main()

result

楼医生
我遇到一个“怪”病人,向大家请教。她,42岁。反复惊吓后晕厥30余年。每次受响声惊吓后发生跌倒,短暂意识丧失。无逆行性遗忘,无抽搐,无口吐白沫,无大小便失禁。多次跌倒致外伤。婴儿时有惊厥史。入院查体无殊。ECG、24小时动态心电图无殊;头颅MRI示小软化灶;脑电图无殊。入院后有数次类似发作。请问该患者该做何诊断,还需做什么检查,治疗方案怎样?
lion000
从发作的症状上比较符合血管迷走神经性晕厥,直立倾斜试验能协助诊断。在行直立倾斜实验前应该做常规的体格检查、ECG、UCG、holter和X-ray胸片除外器质性心脏病。贴一篇“口服氨酰心安和依那普利治疗血管迷走性晕厥的疗效观察”作者:林文华 任自文 丁燕生http://www.ccheart.com.cn/ccheart_site/Templates/jieru/200011/1-1.htm
xghrh
同意lion000版主的观点:如果此患者随着年龄的增长,其发作频率逐渐减少且更加支持,不知此患者有无这一特点。入院后的HOLTER及血压监测对此患者只能是一种安慰性的检查,因在这些检查过程中患者发病的机会不是太大,当然不排除正好发作的情况。对此患者应常规作直立倾斜试验,如果没有诱发出,再考虑有无可能是其他原因所致的意识障碍,如室性心动过速等,但这需要电生理尤其是心腔内电生理的检查,毕竟是有一种创伤性方法。因在外地,下面一篇文章可能对您有助,请您自己查找一下。心理应激事件诱发血管迷走性晕厥1例 ,杨峻青、吴沃栋、张瑞云,中国神经精神疾病杂志, 2002 Vol.28 No.2
keys
该例不排除精神因素导致的,因为每次均在受惊吓后出现。当然,在作出此诊断前,应完善相关检查,如头颅MIR(MRA),直立倾斜试验等。

code_datawhale02-01_dxybbs_reply_xpath.py

# encoding:utf-8
import requests
from lxml import etree# 利用request 请求网页
def get_html(url):HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0';Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"}response = requests.get(url,headers = HEADERS)response.encoding = 'utf-8'if response.status_code == 200:# print(response.text)return response.textreturn"""
1,xpath简介
XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。
在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。
选取节点
XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。 下面列出了最有用的路径表达式:
表达式 描述
nodename    选取此节点的所有子节点。
/   从根节点选取。
//  从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.   选取当前节点。
..  选取当前节点的父节点。
@   选取属性。————————————————
版权声明:本文为CSDN博主「whalefall」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/whalefall/article/details/89141970
https://blog.csdn.net/BBBrian88/article/details/93206163
Python replace(),split(),strip(),join()函数方法
replace()方法语法:
str.replace(old, new[, max])参数
old – 将被替换的子字符串。
new – 新字符串,用于替换old子字符串。
max – 可选字符串, 替换不超过 max 次str.split(str="", num=string.count(str)).参数
str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数。默认为 -1, 即分隔所有。
返回值
返回分割后的字符串列表。声明:s为字符串,rm为要删除的字符序列. 只能删除开头或是结尾的字符或是字符串。不能删除中间的字符或是字符串。
s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符
s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符
s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符
注意:当rm为空时,默认删除空白符(包括’\n’, ‘\r’, ‘\t’, ’ ')
描述
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)或字符序列。注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。————————————————
版权声明:本文为CSDN博主「BBBrian88」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/BBBrian88/article/details/93206163"""
# 通过xpath筛选评论
def get_info(html):# datas = ""  # 用来存放获取的用户名和评论# soup = BeautifulSoup(html,'lxml')# infos = soup.find_all("tbody")# print (infos)# for data in infos:#     try:#         userid = data.find("div", class_="auth").get_text(strip = True)#         # print(userid)#         content = data.find("td",class_ = "postbody").get_text(strip = True)#         # print(content)#         # datas.append((userid,content))#         datas += userid + '\n' + content + '\n'tree = etree.HTML(html)userid = tree.xpath('//div[@class = "auth"]/a/text()')# print(userid)contents = tree.xpath('//td[@class="postbody"]')# print (contents)datas = ""  # 用来存放获取的用户名和评论for i in range(0, len(userid)):# Xpath string()提取多个子节点中的文本  https://www.cnblogs.com/thunderLL/p/8038927.htmlcontent =  (contents[i].xpath('string(.)')).strip()   # .strip()不能去除中间的空白符# print("1111111")# print (content)# print("222222")datas += (userid[i].strip() + ":" + content.replace('\n','') + '\n')with open('result_dxybbs_reply_xpath.txt', 'w', encoding='utf-8') as f:f.write(str(datas) + '\n')print(datas)print("您的评论已入库,请小心使用...")def main():url = "http://www.dxy.cn/bbs/thread/626626#626626"html = get_html(url)infos = get_info(html)if __name__ == '__main__':main()

result

楼医生:我遇到一个“怪”病人,向大家请教。她,42岁。反复惊吓后晕厥30余年。每次受响声惊吓后发生跌倒,短暂意识丧失。无逆行性遗忘,无抽搐,无口吐白沫,无大小便失禁。多次跌倒致外伤。婴儿时有惊厥史。入院查体无殊。ECG、24小时动态心电图无殊;头颅MRI示小软化灶;脑电图无殊。入院后有数次类似发作。请问该患者该做何诊断,还需做什么检查,治疗方案怎样?
lion000:从发作的症状上比较符合血管迷走神经性晕厥,直立倾斜试验能协助诊断。在行直立倾斜实验前应该做常规的体格检查、ECG、UCG、holter和X-ray胸片除外器质性心脏病。贴一篇“口服氨酰心安和依那普利治疗血管迷走性晕厥的疗效观察”作者:林文华 任自文 丁燕生http://www.ccheart.com.cn/ccheart_site/Templates/jieru/200011/1-1.htm
xghrh:同意lion000版主的观点:如果此患者随着年龄的增长,其发作频率逐渐减少且更加支持,不知此患者有无这一特点。入院后的HOLTER及血压监测对此患者只能是一种安慰性的检查,因在这些检查过程中患者发病的机会不是太大,当然不排除正好发作的情况。对此患者应常规作直立倾斜试验,如果没有诱发出,再考虑有无可能是其他原因所致的意识障碍,如室性心动过速等,但这需要电生理尤其是心腔内电生理的检查,毕竟是有一种创伤性方法。因在外地,下面一篇文章可能对您有助,请您自己查找一下。心理应激事件诱发血管迷走性晕厥1例 ,杨峻青、吴沃栋、张瑞云,中国神经精神疾病杂志, 2002 Vol.28 No.2
keys:该例不排除精神因素导致的,因为每次均在受惊吓后出现。当然,在作出此诊断前,应完善相关检查,如头颅MIR(MRA),直立倾斜试验等。

task03

任务预览

1.安装selenium并学习,使用selenium模拟登陆163邮箱。(163邮箱:https://mail.163.com)
2.学习IP相关知识:
1)学习什么是IP,为什么会出现IP被封,如何应对IP被封的问题。
2) 抓取西刺代理,并构建自己的代理池。(西刺:https://blog.csdn.net/weixin_43720396/article/details/88218204)参考资料:https://blog.csdn.net/weixin_42937385/article/details/88150379
https://blog.csdn.net/weixin_43720396/article/details/88218204————————————————
版权声明:本文为CSDN博主「Qinchuyan_2019」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42795083/article/details/99109381

code_datawhle03-01_163mail_login.py


# 试用selenium
# from selenium import webdriver# browser = webdriver.Chrome()
# browser.get("http://www.baidu.com")
"""
sleep(): 强制等待,设置固定休眠时间
implicitly_wait():隐石等待,也叫智能等待,是 webdirver 提供的一个超时等待。隐的等待一个元素被发现,或一个命令完成。如果超出了设置时间的则抛出异常。
WebDriverWait():显示等待,同样也是 webdirver 提供的方法。
在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,
如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException
https://www.cnblogs.com/VseYoung/p/selenium_wait_3_python.html
Task5 安装selenium并学习,登录163.邮箱
https://blog.csdn.net/u011757108/article/details/88168215
Datawhale|第八期 爬虫3
https://blog.csdn.net/weixin_42795083/article/details/99109381https://blog.csdn.net/wujialaoer/article/details/85172351
selenium自动化登录网易163邮箱全部代码(网易的邮箱好像都能用)https://blog.csdn.net/tao15716645708/article/details/86701019
selenium模拟登陆淘宝,获取cookieshttps://www.cnblogs.com/hellosecretgarden/p/9206648.html
自动化测试 selenium 模块 webdriver使用(一)https://blog.csdn.net/huilan_same/article/details/52200586
selenium之 定位以及切换frame(iframe)https://blog.csdn.net/sinat_29177717/article/details/83048127
Python+Selenium自动化测试笔记:登录163邮箱"""
import random
import timefrom selenium import webdriverdef automatic_login(name, pwd, url):browser = webdriver.Chrome()# url = 'http://mail.163.com/'browser.get(url)time.sleep(5)browser.maximize_window()  # 打开网页窗口# time.sleep(10)browser.implicitly_wait(3)  # 隐式等待# 切换为窗口登录browser.find_element_by_id('lbNormal').click()time.sleep(random.random())  # 随机休眠0-1秒# iframe = browser.find_element_by_xpath('//div[@id="loginDiv"]/iframe')# 找到邮箱账号登录框对应的iframe的id是动态的,所以不能用id寻找,有没有name,所以用索引0browser.switch_to.frame(0)# 找到邮箱账号输入框time.sleep(3)email = browser.find_element_by_name("email")email.clear()# 将自己的邮箱地址输入到邮箱账号框中# email.send_keys('1***1')email.send_keys(name)print("5" * 10)time.sleep(3)# 找到密码输入框password = browser.find_element_by_name("password")password.clear()# 输入自己邮箱密码# password.send_keys('3***5')password.send_keys(pwd)# 找到登录按钮login_em = browser.find_element_by_id('dologin')# 点击登录按钮login_em.click()time.sleep(9)browser.quit()def main():name = str(input("请输入账号:"))pwd = str(input("请输入密码:"))url = 'http://mail.163.com/'automatic_login(name, pwd, url)if __name__ == "__main__":main()

result

登录成功

code_datawhle03-02_163mail_login_xici.py

import requests
from lxml import etree
import time
# 424.13342022895813"""
https://blog.csdn.net/weixin_38920937/article/details/81914142
爬取西刺代理检测代理是否可用并记录时间
https://blog.csdn.net/q1694222672/article/details/82716753
代理池篇(一)获取66免费代理网+西刺代理
解决被西刺代理封ip的问题
https://blog.csdn.net/blackeagleoht/article/details/89670702
"""def get_all_proxy(n):url = 'http://www.xicidaili.com/nn/' + str(n)headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',}response = requests.get(url, headers=headers)# with open('song.html', 'wb') as f:#     f.write(response.content)html_ele = etree.HTML(response.text)ip_eles = html_ele.xpath('//table[@id="ip_list"]/tr/td[2]/text()')port_ele = html_ele.xpath('//table[@id="ip_list"]/tr/td[3]/text()')# print(len(ip_eles))# print(len(port_ele))proxy_list = []for i in range(0,len(ip_eles)):proxy_str = 'http://' + ip_eles[i] + ':' + port_ele[i]proxy_list.append(proxy_str)return proxy_listdef check_all_proxy(proxy_list):valid_proxy_list = []for proxy in proxy_list:url = 'http://www.baidu.com/s?wd=ip'proxy_dict = {'http': proxy}try:response = requests.get(url, proxies=proxy_dict, timeout=5)if response.status_code == 200:print('代理可用:' + proxy)valid_proxy_list.append(proxy)with open('result_proxy_xici.txt', 'a', encoding='utf-8') as f:f.write( str(proxy) + '\n')else:print('代理超时')except:pass#print('代理不可用--------------->')return valid_proxy_listif __name__ == '__main__':start_time = time.time()print(',前方请注意,开始爬了___--'* 3)for i in range(3):proxy_list = get_all_proxy(i)valid_proxy_list = check_all_proxy(proxy_list)time.sleep(3)end_time = time.time()print('--'*30)print(valid_proxy_list)print('耗时:' + str(end_time-start_time))

result

http://112.85.171.67:9999
http://163.204.240.181:9999
http://112.87.69.106:9999
http://123.163.96.169:9999
http://139.227.162.32:8118
http://60.13.42.147:9999
http://58.253.154.113:9999
http://42.159.91.248:8080
http://60.13.42.9:9999
http://182.35.81.5:9999
http://112.87.69.176:9999
http://60.13.42.55:9999
http://163.204.240.101:9999

task4

任务预览

模拟登录丁香园,并抓取论坛页面所有的人员基本信息与回复帖子内容。
(丁香园:http://www.dxy.cn/bbs/thread/626626#626626 )

code_datawhale04_dxybbs_reply_login.py

# encoding:utf-8
"""
任务预览
模拟登录丁香园,并抓取论坛页面所有的人员基本信息与回复帖子内容。(丁香园:http://www.dxy.cn/bbs/thread/626626#626626 )
https://blog.csdn.net/weixin_42795083/article/details/99320276
"""
import time
from lxml import etreefrom selenium import webdriverclass 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,name,pwd,url):print("俺来了.....")browser = webdriver.Chrome()login_url = 'https://auth.dxy.cn/accounts/login?service=http://www.dxy.cn/bbs/index.html'browser.get(login_url)time.sleep(1)browser.maximize_window()  # 打开网页窗口# 切换账号密码登录表单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)time.sleep(3)#输入账号密码input_name = browser.find_element_by_name('username')input_name.clear()input_name.send_keys(name)input_pass = browser.find_element_by_name('password')input_pass.clear()input_pass.send_keys(pwd)# 点击登录# print("1"* 10)browser.find_element_by_xpath('//*[@class="form__button"]/button').click()# print("2" * 10)# 此步骤有滑动验证码,先跳过time.sleep(19)cookie = browser.get_cookies()cookie_dict = {i['name']:i['value'] for i in cookie}# 转到抓取的页面# url = "http://www.dxy.cn/bbs/thread/626626#626626"browser.get(url);html = browser.page_sourcetree = etree.HTML(html)user = tree.xpath('//div[@id="postcontainer"]//div[@class = "auth"]/a/text()')print("3" * 10)# print(user)contents = tree.xpath('//td[@class = "postbody"]')result = ""for i in range(0, len(user)):content =  contents[i].xpath('string(.)').strip()result += user[i].strip() + ":" + content.replace('\n','')+ "\n"print(user[i].strip())# 写入文件with open("result_dxybbs_reply_login.txt", 'w', encoding='utf-8') as f:f.write(str(result +"\n"))time.sleep(9)browser.quit()print('到此一游')if __name__ == '__main__':geturl = getUrl()name = str(input("请输入账号:"))pwd = str(input("请输入密码:"))url = "http://www.dxy.cn/bbs/thread/626626#626626"geturl.run(name,pwd,url)

result

楼医生:我遇到一个“怪”病人,向大家请教。她,42岁。反复惊吓后晕厥30余年。每次受响声惊吓后发生跌倒,短暂意识丧失。无逆行性遗忘,无抽搐,无口吐白沫,无大小便失禁。多次跌倒致外伤。婴儿时有惊厥史。入院查体无殊。ECG、24小时动态心电图无殊;头颅MRI示小软化灶;脑电图无殊。入院后有数次类似发作。请问该患者该做何诊断,还需做什么检查,治疗方案怎样?
lion000:从发作的症状上比较符合血管迷走神经性晕厥,直立倾斜试验能协助诊断。在行直立倾斜实验前应该做常规的体格检查、ECG、UCG、holter和X-ray胸片除外器质性心脏病。贴一篇“口服氨酰心安和依那普利治疗血管迷走性晕厥的疗效观察”作者:林文华 任自文 丁燕生http://www.ccheart.com.cn/ccheart_site/Templates/jieru/200011/1-1.htm
xghrh:同意lion000版主的观点:如果此患者随着年龄的增长,其发作频率逐渐减少且更加支持,不知此患者有无这一特点。入院后的HOLTER及血压监测对此患者只能是一种安慰性的检查,因在这些检查过程中患者发病的机会不是太大,当然不排除正好发作的情况。对此患者应常规作直立倾斜试验,如果没有诱发出,再考虑有无可能是其他原因所致的意识障碍,如室性心动过速等,但这需要电生理尤其是心腔内电生理的检查,毕竟是有一种创伤性方法。因在外地,下面一篇文章可能对您有助,请您自己查找一下。心理应激事件诱发血管迷走性晕厥1例 ,杨峻青、吴沃栋、张瑞云,中国神经精神疾病杂志, 2002 Vol.28 No.2
keys:该例不排除精神因素导致的,因为每次均在受惊吓后出现。当然,在作出此诊断前,应完善相关检查,如头颅MIR(MRA),直立倾斜试验等。
楼医生:谢谢上面几位的热心。这个病人从学会走路就出现症状,并且近几年发作越来越频繁,一个月有4、5次。如果说是血管迷走性晕厥,它的机理是什么?在这个病人身上如何解释?
shilly:不会是心因性癫痫吧?我不是专科,猜猜
jrhs:倾斜试验一定先排除器质性心脏病。
yangwein:1,头颅MRI示小软化灶;脑电图无殊,惊吓后晕厥30余年,婴儿时有惊厥史。先做动态脑电图排查癫痫,还有视觉诱发试验等,请神经内科会诊。2,排除神经内科问题后,行直立倾斜实验筛查血管迷走神经性晕厥。彩超排除器质性心脏病。
duzl:楼医生   如果说是血管迷走性晕厥,它的机理是什么?   体位改变-血液下移-Bp、HR下降-晕厥
楼医生:该患者直立倾斜试验阴性。UCG无殊。实在是个棘手的病人。下步诊断、治疗方案如何,请各位同仁指点。谢谢!
jrhs:动态脑电图就能排除癫痫吗?我看不能,发作时有脑电图吗?
shanshoujie:晕厥分类:心源性,非心源性,原因不明等三类,心源性包括心脏排血受阻,心律失常两类,非心源性包括血管神经运动失调性,脑血管疾病性,神经系统,代谢内分泌性等,所以常规检查包括心电图,超声心动图,CT,脑电图,24小时动态心电图,运动平板,心脏电生理等,但靠24小时动态心电图正常不能排除心律失常所致,必要时需要心电记录器延长监测,对于血管神经运动失调性及不明原因所致,建议行直立倾斜试验。
eabee:问:这个病人智力有问题吗? 说她有30多年的发病史,多次发作时有外伤,问最严重的外伤情况如何?有无癔病的可能???说她婴儿时有惊厥史,说明她脑损伤病变的可能性存在,可能脑病变本身存在,也可能是惊厥后导致脑损伤。1)试用抗癫痫药物治疗,可以考虑用比较缓和的药物尝试。2)检测脑血管情况,实验用钙拮抗剂,或其他扩血管药物。
xghrh:希望下面的流程图对您的下步诊治有帮助。
楼医生:问:这个病人智力有问题吗? 说她有30多年的发病史,多次发作时有外伤,问最严重的外伤情况如何?有无癔病的可能???说她婴儿时有惊厥史,说明她脑损伤病变的可能性存在,可能脑病变本身存在,也可能是惊厥后导致脑损伤。1)试用抗癫痫药物治疗,可以考虑用比较缓和的药物尝试。2)检测脑血管情况,实验用钙拮抗剂,或其他扩血管药物。 该患者智力正常,已结婚生子。最严重的外伤是跌倒致脑出血,还有数次骨折、颜面部外伤,门牙跌落数枚。基本排除癔病可能。
雨叶:我认为这个病人可能是癫痫,应该发作时做脑电图
mmdra:Hehe! LQTs!!!
daeik:晕厥之前是否有出汗、恶心、脸色苍白等症状?晕厥持续时间?除考虑血管迷走性晕厥之外,癔病也不能除外。
小贤:每次晕厥后意识马上恢复,神志清楚,则考虑心血管原性可能大晕厥后意识恢复慢,有嗜睡,则中枢性可能大此患者意识恢复是否很快
RonnieWhite:LQT
shunwee:从病史看及发作情形看恶性心律失常所致晕厥可能性不大,鄙人认为不典型癫痫可能性较大,但也应排除迷走性晕厥,直立倾斜可以做但阳性并不能排除癫痫。可考虑用卡马西平试验性治疗。
Edmond:楼医生   该患者直立倾斜试验阴性。UCG无殊。实在是个棘手的病人。下步诊断、治疗方案如何,请各位同仁指点。谢谢!   楼医生,估计是查不出什么问题的,因为已经都快30多年的病史了,该有的疾病应该现出原形了,而现在却恰恰没法子找到它。既然都检查过了,也没发现有价值得的东西,而且每次发作多因惊吓引起,你看,是否就试一试“惊吓”的方法来诱发它呢?诱发的时候可以心电监护、血压监护、脑电图监测等等,相信肯定有所发现的。这也是不是办法的办法,您说呢?
紫薇1219:我认为癫痫的可能性最大,但的确应该先排除心源性的,可以进一步查一下。
lingguang:同志们呀,我认为是不是考虑一下先天性长QT综合征?这种病人可是会因为受惊吓导致晕厥甚至致死的呀!
lingguang:应当是一种肾上腺依赖性的,在受惊吓时肾上腺素大幅度升高,出现恶性心律失常而致晕厥。我不知道当时HOLTER检查时有没有发作?当时若有发作时的心电图最有说服力。我认为应当排除这方面的情况。必要的时候作惊吓试验,当然现场要有心电监护以及抢救措施。
呆子:考虑为癫痫,建议动态脑电图,若阴性。则试用抗癫痫药
lingguang:应当做惊吓试验,脑电图与心电图同时监测。我想肯定会有结果的。无非是两种情况:脑源性与心源性。

扩展

https://blog.csdn.net/u012914436/article/details/100031810
携程滑动与点选文字验证码破解

END

谢谢阅读

datawhale_爬虫_spider |第八期相关推荐

  1. android 周报,MAndroid 周报第八期

    MAndroid 周报第八期 写在前面的话 大家补充的库 一.开源库 简单好用的ratingbar image RecyclerView下拉刷新,自动加载更多:仿IOS侧滑Item删除菜单 image ...

  2. 写在马哥教育第八期开始之前

    "你不能剥夺别人思考的权力"!记得读研期间一位导师在谈到"传道.授业.解惑"时特地强调.当时身为学生,并未能完全.真切地理解这位导师表述的真正意图.而当自己独立 ...

  3. 信息安全意识电子期刊第八期

    2019独角兽企业重金招聘Python工程师标准>>> 信息安全意识电子期刊第八期 网购热潮兴起,支付安全备受关注.虽然网上支付快捷方便,但是仍存在着很多的安全隐患,账户里的钱被莫名 ...

  4. 推荐八款来自极客标签的超棒前端特效[第八期]

    为什么80%的码农都做不了架构师?>>>    日期:2013-6-24  来源:GBin1.com 本周,我们带来了极客社区推荐的10款前端特效,非常有趣的小游戏和页面生成.希望可 ...

  5. 抢票 | AI未来说学术论坛第八期 深度学习特别专场

    AI已来,而你来不来!? 人工智能论坛如今浩如烟海,有硬货.有干货的讲座却百里挑一."AI未来说"青年学术论坛第八期如约而至.来自中国科学院大学的"AI小鸭学院" ...

  6. 发布 项目_第十八期科创基金项目发布会圆满结束

    第十八期科创基金项目发布会圆满结束 贺电!贺电! 电子信息工程学院发来贺电:第十八届科创基金项目发布会圆满结束啦!感谢导师们的支持.现场同学的热情参与和科协朋友后勤服务! NUAA 即使是寒冷的冬天也 ...

  7. java设计单词英译汉小助手_拣单词|第八期第3天:第521528个单词宝藏

    宝 藏 坚持每天拣单词 积累你的词汇宝藏 打好英语学习基本功 怎么学? 每天预留15分钟,积累你的词汇宝藏! 每周一.二.三,发布新单词 每周四.五.六,乱序复习单词 周日测试(仅限入群的学员) 遇到 ...

  8. c语言sort函数_C语言的那些经典程序 第八期

    戳"在看"一起来充电吧! C语言的那些经典程序 第八期 上期带大家欣赏的指针经典程序,感觉如何?这期我们准备了几个新指针的内容,灵活运用指针可以大大减少程序的复杂度,接下来就让小C ...

  9. 微信小程序周报(第八期)

    2019独角兽企业重金招聘Python工程师标准>>> 微信小程序联盟--微信小程序周报 每周一笑 客户被绑,蒙眼,惊问:"想干什么?"对方不语,鞭笞之,客户求饶 ...

最新文章

  1. R聚类(整群)抽样(Cluster Sampling)
  2. linux 笔记--while循环、函数和进程管理
  3. Zenoss学习杂记(十)
  4. 控制反转(ioc)和 面向切面(AOP)
  5. 运用代码管理段来提升开发效率
  6. 关于云原生需要了解什么
  7. 浅谈ES6中的rest参数
  8. hibernate_Restrictions用法 .
  9. 【好玩的代码雨(附源代码
  10. Java 9 的 9 个特性
  11. 申请微信公众号平台流程
  12. [UWP开发] Facebook SDK使用(一) —— 配置SDK及Facebook登陆
  13. 持久化存储PV与PVC
  14. 微信开发者工具 设置wxml属性换行
  15. 乐动手环app下载安装_乐动健康下载app_新版本手机乐动健康手环软件下载安装 安卓版 V2.08 - 罐头安卓网...
  16. could not delete: [org.jbpm.pvm.internal.model.ExecutionImpl#20007] 使用jbpm流程结束时出现异常
  17. h5的第一天 做的自定义调色器
  18. MUI中vue的@click事件没反应
  19. CentOS查看主板型号及硬件信息
  20. miui11升级鸿蒙,MIUI11新版本推送 GPU驱动更新 小米10 Pro跑分轻松突破60万

热门文章

  1. 数学基础 - 第十九章 一次函数
  2. YLC-Shopping(ASP.NET MVC 小型商品管理系统)
  3. matlab在三维图侧面添加二维图
  4. SDL系列讲解(一) 简介
  5. 乘风破浪会有时,直挂云帆济沧海。
  6. python原生爬虫爬取熊猫TV LOL主播人气排行
  7. Java8 Steam API中groupingBy和flatMap方法的使用
  8. shell bash脚本_如何在Windows 10上创建和运行Bash Shell脚本
  9. 华为s5735交换机配置ssh远程登陆
  10. 计算机应用技术上海积分,软考能用来申请上海居住证积分吗?教你顺利办积分!...