鱼C论坛

 找回密码
 立即注册
查看: 2026|回复: 19

[已解决]怎么让他循环起来

[复制链接]
发表于 2020-1-28 12:33:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. url='https://www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&CatId=&SearchText=lift+table'
  2. headers={
  3.   'user-agent':'Mozilla/5.0'
  4. }
  5. import requests
  6. import bs4

  7. res = requests.get(url, headers=headers)

  8. soup = bs4.BeautifulSoup(res.text, "html.parser")
  9.    
  10. link = soup.find('div','organic-list-offer-right').find('a')['href']
  11. print(link)
复制代码


这个页面要提取50个链接,现在我只能提取到一个,怎么能让他循环起来呢
最佳答案
2020-1-29 21:07:43
最终代码:

  1. import requests
  2. import bs4
  3. url = 'https://www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&CatId=&SearchText=lift+table'
  4. headers = {
  5.     'user-agent': 'Mozilla/5.0'
  6. }

  7. for i in range(1, 51):
  8.     res = requests.get(url + f"&page={i}", headers=headers)

  9.     soup = bs4.BeautifulSoup(res.text, "html.parser")

  10.     link = soup.find('div', 'organic-list-offer-right').find('a')['href']
  11.     print(link)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-1-28 15:10:15 From FishC Mobile | 显示全部楼层
本帖最后由 _2_ 于 2020-1-29 21:12 编辑

在第7行加一句
  1. for i in range(1,51):
复制代码

后面的代码全部缩进一格
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-29 10:48:18 | 显示全部楼层
_2_ 发表于 2020-1-28 15:10
在第7行加一句

后面的代码全部缩进一个

为什么是 range(51),而不是 range(50) ?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-29 20:27:29 | 显示全部楼层
zltzlt 发表于 2020-1-29 10:48
为什么是 range(51),而不是 range(50) ?

range(stop)
range(start, stop[, step])
参数说明:

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-29 20:32:12 From FishC Mobile | 显示全部楼层
lizhiyong_11 发表于 2020-1-29 20:27
range(stop)
range(start, stop[, step])
参数说明:

range(50)不是循环50次了吗,0到49,一共50个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-29 20:32:40 | 显示全部楼层
zltzlt 发表于 2020-1-29 10:48
为什么是 range(51),而不是 range(50) ?

次数的问题?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-29 20:33:33 | 显示全部楼层
_2_ 发表于 2020-1-28 15:10
在第7行加一句

后面的代码全部缩进一个
  1. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  2. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  3. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  4. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  5. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  6. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  7. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  8. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  9. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  10. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  11. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  12. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  13. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  14. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  15. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  16. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  17. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  18. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  19. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
  20. //giant-move.en.alibaba.com/company_profile.html#top-nav-bar
复制代码


加上一个循环之后他只是把同一个网址提取了50遍

实际上这个页面里对应有50个不同的网址,你每点击一个就进入到一个不同的界面,我想把这些网址都提取出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-29 20:43:09 | 显示全部楼层
hrp 发表于 2020-1-29 20:32
range(50)不是循环50次了吗,0到49,一共50个

是50个没毛病,我看上边的鱼友问了一下,我就给他去找了一个答案,哈哈哈,不过倒是没有解决我的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-29 20:56:51 | 显示全部楼层
lizhiyong_11 发表于 2020-1-29 20:43
是50个没毛病,我看上边的鱼友问了一下,我就给他去找了一个答案,哈哈哈,不过倒是没有解决我的问题

你能确定就有50个吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-29 20:56:58 | 显示全部楼层
各位鱼油大家好
这个爬虫的需求是通过alibba这个网站搜索一些企业,要获取这个企业的一些信息,比如公司的名字,电话,网址等等,是我女朋友的需求,本人菜鸟一枚,自己是知道的,所以也没有抱着写出来的目的,本着学习的态度来搞一下。最终已经花钱在淘宝上找人写了代码,可以成功运行

我举一个例子啊,比如想在阿里巴巴上查一下lift table的企业相关信息,大概过程是这样的打开www.alibaba.com这个网站,在搜索框里输入lift table,你会得到一大串的结果,然后点击第一个进去,我想要的信息就在这里面。然后退回到刚刚搜索出来的结果界面,进到第二个里面去,然后把相关信息提取出来,大概就是这样。  我想我应该是把我的大概意思表达出来了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-29 20:58:01 | 显示全部楼层

range(51) 循环了 51 次
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-29 21:01:44 | 显示全部楼层
_2_ 发表于 2020-1-29 20:56
你能确定就有50个吗?

证据在这里:

  1. >>> len(list(range(51)))
  2. 51
  3. >>> len(list(range(50)))
  4. 50
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-29 21:03:28 | 显示全部楼层
zltzlt 发表于 2020-1-29 20:58
range(51) 循环了 51 次

对不起,对不起,你说的是对的,是我错了,range(51)确实是循环了51次
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-29 21:06:29 | 显示全部楼层
我想到了一个方法。页数在网址上能显示出来:

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

使用道具 举报

发表于 2020-1-29 21:07:43 | 显示全部楼层    本楼为最佳答案   
最终代码:

  1. import requests
  2. import bs4
  3. url = 'https://www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&CatId=&SearchText=lift+table'
  4. headers = {
  5.     'user-agent': 'Mozilla/5.0'
  6. }

  7. for i in range(1, 51):
  8.     res = requests.get(url + f"&page={i}", headers=headers)

  9.     soup = bs4.BeautifulSoup(res.text, "html.parser")

  10.     link = soup.find('div', 'organic-list-offer-right').find('a')['href']
  11.     print(link)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-29 21:11:26 | 显示全部楼层

忘记默认是 0 了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-29 21:39:43 | 显示全部楼层

佩服,佩服,完全解决了我这个帖子的问题。

再请教一个问题,帖子开头我说循环50次是我自己去那个界面去查的应该有50个,但是实际上好像不对哎,有没有什么办法让他自动识别这个页面到底有几个我想要的企业呢?我贴一个链接哈
https://www.alibaba.com/trade/se ... archText=lift+table
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-29 21:41:01 | 显示全部楼层
lizhiyong_11 发表于 2020-1-29 21:39
佩服,佩服,完全解决了我这个帖子的问题。

再请教一个问题,帖子开头我说循环50次是我自己去那个界面 ...

源代码中貌似没看到相关信息
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-29 21:48:52 | 显示全部楼层
zltzlt 发表于 2020-1-29 21:41
源代码中貌似没看到相关信息

我仔细核对了一下网址,好像好像爬出来的网址不大对,我截了一张图,我想要的是这个标题下面的链接,这一页所有的这种标题下的链接
00.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-18 07:17:19 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 18:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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