作者为了得到部门分,每月要写40篇推送文章,每篇文章都需要先打开新闻网站,再复制粘贴到发帖网站,署上自己和指导教师的名字然后提交。接着还要重新点开链接复制下网址和标题存起来。
作者非常懒,于是他写了一个自动化程序帮助(代替)他完成工作。
这里我选择BeatifulSoup和Selenium混用,因为BeautifulSoup比较擅长处理静态的HTML界面,用它爬取新闻网站上的内容比较合适。Selenium则可以模拟用户的行为,比如点击,输入等,可以用它帮我发布文章。
这里有一个get()方法,属于是升级了request.get()。因为request.get()必须有完整的url,但爬取到的网址有时残缺不全。因此,我将少了“https://”的网址加上了,但是其他问题的我不想处理,因为总有各种各样的问题,所以我让出现其他问题的赋值为一个固定网址。这里常规思路可能应当使用try…except…但因为是在函数内,如果没有返回值后面可能又要报错,所以偷懒没写。
这里首先利用beautifulSoup得到了新闻网站“环球网”的html界面,这个界面长这样。
通过检查我们不难发现,我们想要的新闻网页的网址和标题的特点是,标签为a,有href属性,href的值就是网址,其中带有article的是我们想要的新闻。于是我们先将标题和网址都存到字典中。
然后我们打开随便一篇新闻。
我们看到,这里我们想要的文章标签为p。于是我们找到所有标签为p的位置,并把他们加起来,如果长度超过500就保存在新字典中。这里可以直接屏蔽我刚才偷懒写的那个网址,因为它是一个视频,文字部分非常短。
然后就是Selenium的部分了,这里我们首先到达登录界面,通过css属性找到输入框,这非常容易,因为只有两个,那他们就分别是0,1。
进入发帖网站后是点击,输入,这里就不赘述了。比较重要的是使用wait,因为页面可能加载的比较慢。另外,如果你已经连接到iframe里,进行其他操作时一定不要忘了断开连接(作者因为这个问题被卡了好长时间……)
啊啊最后是私货,Vsinger旗下虚拟歌手徵羽摩柯的ai声库终于出了,大家快去听!!!
然后,作者最近可能会更一点点小甜饼,会跟之前儿童节的剧情有关。
祝大家生活愉快,天天开心,考试不挂科,逃晚自习不被点名(不是)!
serebiij10 2024-09-17
Calvin_Aero 2024-09-17