青松100 发表于 2020-10-18 13:57:46

爬取天涯论坛的练习--参数设置 + 正则

以下是小白的纯练习,基础很差,表达能力也很差。要是我的问题描述得不清不楚,麻烦指出来,我可以再描述清楚一点。请大神勿喷。(希望两个问题能同时回答,万一张三回答一个,李四回答另一个,我不知要采纳谁好。)

天涯论坛不需要注册或登录,可以直接搜索。

1. 我想爬取 ‘天涯’论坛,某个用户(随便举个实例:tendays2029abc),可是下面的代码,出现的输入的ID,只在帖子主题中出现的, 并没有同时显示到底有没有这个用户。
而在天涯论坛的搜索框输入:tendays2029abc, 它会同时显示帖子的主题有没有包含这个关键词和这个用户-tendays2029abc 见截图
https://s1.ax1x.com/2020/10/18/0X8ief.png

请教一下是不是我的url 编写错了,少了 &pid=?
https://search.tianya.cn/bbs?q=tendays2029abc&pid=         (这个是天涯搜索框的网址。)

如果少写了,这个&pid= 应该写在哪呀?我尝试了乱写一通,可是结果是错的。

2. 这个用户 tendays2029abc, 有无数的帐号。比如:tendays2024abc, tendays2025abc, tendays2030abc等等
我尝试运行本程序时,不直接输入具体的用户名,而是用正则表达式:tendays20\d\dabc出错了。请问我能在input的函数提示输入正则吗?我的正则表达式是不是出错了? 应该怎么做才能把这个用户的ID一网打尽,全部爬出来?


import requests
url = 'https://search.tianya.cn/bbs'
headers = {
   'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
}
kw = input('请输入关键词:')
params = {
    'q' : kw
}
response = requests.get (url=url, params=params, headers=headers)
page_text = response.text
filename = kw +'.html'
with open (filename, 'w',encoding='utf-8') as fp:
    fp.write(page_text)

均昊山 发表于 2020-10-19 08:48:31

https://search.tianya.cn/search/pub/search_right_user3.jsp?q=tendays2029abc

https://search.tianya.cn/search/pub/search_right_user3.jsp?q= 用户名/id

青松100 发表于 2020-10-19 10:29:59

均昊山 发表于 2020-10-19 08:48
https://search.tianya.cn/search/pub/search_right_user3.jsp?q=tendays2029abc

https://search.tianya ...

1/ 大神,这个网址是哪找出来的?

2/ 如果我想同时找人,和这个ID的相关主帖,用我的那个网址,我想还要再添加一个参数 pid对吗?这个参楼要咋写?

3/我的正则写对了吗? 如果我在控制台输入正则,可以把这个人的所以ID都找出来吗?

谢谢帮助



疾风怪盗 发表于 2020-10-19 11:22:50

没有搜到这个人其他马甲啊。。。。。。。

你说的pid,是什么意思?为什么要加这个参数?

青松100 发表于 2020-10-19 11:36:54

本帖最后由 青松100 于 2020-10-19 11:42 编辑

疾风怪盗 发表于 2020-10-19 11:22
没有搜到这个人其他马甲啊。。。。。。。

你说的pid,是什么意思?为什么要加这个参数?

谢谢大佬帮助。

1. 在天涯,如果您一个个搜就可以搜到
tendays2025abc
tendays2039abc
tendays2040abc

我的意思是,我能在我编写的爬虫,input中,输入用户名,采用正则的表达式,来找这个人的马甲吗?

tendays20\d\dabc

我试了,但是控制台报错。

2. 麻烦您看看我的一楼的截屏,上面有网址,网址中包含:?q=tendays2029abc&ipd=

我想爬取这个人的所有马甲,和与其关相的主题。

在天涯的搜索框中,如果我输入这个人的其中一个ID,就是会出左侧(用户)和中间的帖子显示关于这个ID的主题。(当然,我的目的只是当练习,没有别的意图。不过这个ID非常典型,可以用到正则,所以我用他当练习。)


均昊山 发表于 2020-10-27 09:22:51

青松100 发表于 2020-10-19 10:29
1/ 大神,这个网址是哪找出来的?

2/ 如果我想同时找人,和这个ID的相关主帖,用我的那个网址,我想还 ...

浏览器开发者工具能看到,问题解决了没,都差不多8天了

青松100 发表于 2020-10-27 10:19:50

均昊山 发表于 2020-10-27 09:22
浏览器开发者工具能看到,问题解决了没,都差不多8天了

不是我不采纳。当时你回答之后,我又追问了,你也没有再回答了呀?

1. 第一个问题能回答再详细一点吗?

我进入搜索页面的话,点击F12,抓包,在NETWOR或哪找到你用的网址?

第2,3,麻烦你教教我呗?--这个你也没有回答呀?

要是解决了,我保证采纳。

小白基础太差,希望大神能耐心点。

均昊山 发表于 2020-10-27 10:24:36

青松100 发表于 2020-10-27 10:19
不是我不采纳。当时你回答之后,我又追问了,你也没有再回答了呀?

1. 第一个问题能回答再详细一点 ...

我不是那个意思~~,我好几天没灌论坛了,以为问题已经解决了

均昊山 发表于 2020-10-27 10:47:39

点搜索后仔细找找就看到了

pid 只接受一次 关键信息,不能同时接受多个,或者你再试试pid参数

aironeng 发表于 2020-10-27 11:09:01

学习一下

均昊山 发表于 2020-10-27 12:29:15

青松100 发表于 2020-10-19 10:29
1/ 大神,这个网址是哪找出来的?

2/ 如果我想同时找人,和这个ID的相关主帖,用我的那个网址,我想还 ...

根据我发的那个链接,用关键字就能提供类似相同的id,你只需要正则获取id就好了,qq/微信 1372546610
页: [1]
查看完整版本: 爬取天涯论坛的练习--参数设置 + 正则