selfteaching / selfteaching/selfteaching-python-camp

Day11 安装pyquery库+函数返回结果转字符串+邮箱连接的各种问题---实战感受的吐血分享

Open
#1,057 1 comment 7 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

学习心得分享
Dominant language
Python
Stars
151
Forks
875
PR merge metrics
No merged PRs in 30d

Description

今日实战第一天,必须得纪念一下了。
最重要的是吐血总结
今天不总结我觉得对不起我自己啊!

首先今天做的东西很好玩,感觉有点爬虫技术的意思。之前和大佬聊天,某大佬和我说过大概思路,就是用python去网页上爬取信息,然后发到邮箱里通知自己。可以爬天气预报或者是不定期发布的公告等。

第一个库requests 就是从网站上获取信息,这个看一下例子直接用给的get方法通过url就可以获得网页的基本信息,顺利完成今天的任务。大概看了一下,当然还有post、head等这些HTML的方法。
这样获得的是一个完整的HTML,print一下也可以看到他由完整的<title>。试了一下他别的方法,比如可以看当前的处理状态,比如200(正常完成)。

通过request获得网页返回结果后,开始对网页信息进行抓取,提取那些我们感兴趣的内容。
这里使用pyquery库,我直接安装pyquery库,import的时候看到使用的,但是运行的时候却提示找不到模块,搜了一下,发现要装一个lxml的库,这个最好是去网站上找,选择与自己目前使用python匹配的版本下载(复习:在vs code左下的状态栏可以看到目前的python版本)。然后装这个库,but这个下载的东西要放在运行的目录下(我是user\admin),装完这个库,再回去运行pyquery就可以了。没装pyquery还是要装啊。
关于抓取代码文档直接给出来了,没有什么坑,主要是理解意思:document=response.text,应该就是之抓取文字信息,content = document("#js_content").text(),把抓取的内容写成可视的文字,#js_content可能是某种格式转换(这个我没太想清楚,还拜托大家解惑),总之看文档它要和前面变量是一个名字。

调前两天的分词模块没什么问题,可是要把结果转成字符串以方便发送邮件。要相对函数结果进行操作,函数就必修有返回值,这里让stats_text返回两个函数就可以了,只不过一开始我没有给返回函数写参数,于是一直出现结果不太对的情况。即便是返回函数,改写的参数也要写上! 另外python对于函数的返回要求并不严格,不写返回值也没什么事(只要你调用也没有用到),像C没有返回也必须写个void,所以在定义函数的时候容易忘记不写返回,最好养成习惯函数末尾都加一个return。

然后就是让我花费时间最多的发邮件这一部分
今天用的是yagmail(yet another gmail),然后去网页上搜的话出来的基本上都是用smtplib这个库的。
一点点说吧。。。
首先提示说gmail不能用就是不能用,不是翻个墙那么简单的事。虽然翻墙在网页上操作可以发(这个我试过了),但是用python就是连接不上,可能和服务器有关系,总之还是用别的邮箱吧。
我发邮件用的是163邮箱,然后用另外一个qq邮箱测试

关于保护隐私,文档里也说了,用getpass,因为代码是要公开的,所以不要直接在参数里写

然后就是各种连接不上,连接超时啊,10060这个TCP连接失败啊。
于是我就开始了长达不知道几个小时的各种尝试

直接说结果吧,设置163smtp服务的时候他让你输入了一个授权码,然后短信验证的时候还有一个号码,当时网页上弹出来是将这两个号码绑定验证的,所以我试的时候就一直用这两个号码。
然而正确的操作并不是。用户名还是输入你的邮箱就是xxx@163.com,密码输入你的这个授权码。
之后再SMTP的参数里,多输入一个参数,就是smtp服务器,告诉他应该用哪个服务器,比如我是smtp.163.com,不输这个参数也连接不上(这个是我摸索了各种问题,中间还出现了SSL版本错误的这种神奇操作)

然后就可以顺利的发邮件啦,除了格式不大美观,可是超快超迅速啊!

整体感受就是,调试不要放弃啊,试着试着正解就突然出现了啊!还有就是知识知道的越多解决问题的时候就更加从容一些。我之前学过一点通信的知识,所以今天一方面属于上手实验了,还有一方面看到他报的一些错误,心里也知道他是怎么一回事,不是致命错误也不慌。
不要放弃学习啊!!!之前我选那个课老师上的是一言难尽,很多同学都放弃治疗了,然而还是要考试啊,最后不得不跑到图书馆借了本通讯原理看。今天发现没白看呀!

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue is an experiential write-up about Python, pyquery, email connections, and debugging, but it names no repository file, test, or requested change. There is no implementation entry point or completion criterion to follow, so the issue would need a concrete documentation task before a newcomer could start.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
content, documentation
Issue type
Documentation
Difficulty
1/5
Estimated time
Under an hour
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.