鱼C论坛

 找回密码
 立即注册
查看: 1978|回复: 17

[已解决]python beautifulsoup求助

[复制链接]
发表于 2020-9-28 21:50:51 | 显示全部楼层
select里不传参数,肯定报错了,这个就是相当于拾取器,你要告诉他在哪里取数据

不知道job.html的内容是什么,要么传个附件上来看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-28 22:00:57 | 显示全部楼层
dreamyeyu 发表于 2020-9-28 21:58
大佬好,我没找到哪里上传附件 方便加个vx直接发吗


回复里,高级模式,有个回形针样式,不就是附件么?一般都是这个标志
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-28 23:51:31 | 显示全部楼层
dreamyeyu 发表于 2020-9-28 22:11
截取部分代码也发不出来。。

光看你发的网页代码,也不知道你要获取什么数据

尝试获取你说的51job网页,get到的网页源码也和网页上显示的不一样,源码里没有具体的数据

没办法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-29 00:07:37 | 显示全部楼层    本楼为最佳答案   
本帖最后由 疾风怪盗 于 2020-9-29 00:22 编辑

不要用beautifulsoup了,用xpath或者正则
获取的网页源代码和网页上看到的不一样,用浏览器的复制地址功能不行,自己写又麻烦,还不如正则匹配来的快
下面试着获取了第一页的数据(50个),你自己看看吧,想获取后面页码的,没找到方法

  1. import requests,re

  2. url='https://search.51job.com/list/020000,000000,0000,00,9,99,Python开发工程师,2,2.html'
  3. headers={'User-Agent': 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Mobile Safari/537.36 Edg/85.0.564.63',
  4.          }
  5. response=requests.get(url,headers=headers)
  6. html=response.content.decode()
  7. print(html)


  8. job_name=re.findall(r"<label class='c_red'>(.*?)</label>",html)
  9. print(job_name)
  10. company_name=re.findall(r"<aside>(.*?)</aside>",html)
  11. print(company_name)
  12. print(len(company_name))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-29 10:14:39 | 显示全部楼层
dreamyeyu 发表于 2020-9-29 07:40
谢谢大佬 想获取一页50个点进去的链接= =另外想请问下 要是被发现爬虫伪装之后咋办

这个就复杂了,反爬虫要看的,有的是headers加参数,有的要用selenium自动化模块之类的,有的是获取json数据更方便,要看情况的,还有的无能为力无法获取
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-29 10:45:21 | 显示全部楼层
dreamyeyu 发表于 2020-9-29 07:40
谢谢大佬 想获取一页50个点进去的链接= =另外想请问下 要是被发现爬虫伪装之后咋办

把我代码里额网址替换成你的网址,也能获取第一页的数据,不过也就一页了,之后不知道是不是要登陆才行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-29 10:52:47 | 显示全部楼层
dreamyeyu 发表于 2020-9-29 10:44
好的谢谢大佬 那如果是获取每个链接的正则应该怎样写呢 我试了几次都不对。。
  1. link_address=re.findall(r'<a href="(.*?)" class',html)
  2. print(link_address)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-29 11:24:39 | 显示全部楼层

没有缺项数据的话,正则很简单,一起获取了,再对应起来就行了

而且匹配正则,简单点,就是这样写,把要的数据用(.*?)替代,两边多写一点,就能完美匹配到了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-17 03:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表