鱼C论坛

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

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

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

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

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

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

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

soup = bs4.BeautifulSoup(res.text, "html.parser")
    
link = soup.find('div','organic-list-offer-right').find('a')['href']
print(link)

这个页面要提取50个链接,现在我只能提取到一个,怎么能让他循环起来呢
最佳答案
2020-1-29 21:07:43
最终代码:
import requests
import bs4
url = 'https://www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&CatId=&SearchText=lift+table'
headers = {
    'user-agent': 'Mozilla/5.0'
}

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

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

    link = soup.find('div', 'organic-list-offer-right').find('a')['href']
    print(link)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

在第7行加一句
for i in range(1,51):
后面的代码全部缩进一格
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

后面的代码全部缩进一个

为什么是 range(51),而不是 range(50) ?
想知道小甲鱼最近在做啥?请访问 -> 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)
想知道小甲鱼最近在做啥?请访问 -> 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个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

次数的问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

后面的代码全部缩进一个
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar
//giant-move.en.alibaba.com/company_profile.html#top-nav-bar

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

实际上这个页面里对应有50个不同的网址,你每点击一个就进入到一个不同的界面,我想把这些网址都提取出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

是50个没毛病,我看上边的鱼友问了一下,我就给他去找了一个答案,哈哈哈,不过倒是没有解决我的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你能确定就有50个吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

range(51) 循环了 51 次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

证据在这里:
>>> len(list(range(51)))
51
>>> len(list(range(50)))
50
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

对不起,对不起,你说的是对的,是我错了,range(51)确实是循环了51次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-29 21:07:43 | 显示全部楼层    本楼为最佳答案   
最终代码:
import requests
import bs4
url = 'https://www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&CatId=&SearchText=lift+table'
headers = {
    'user-agent': 'Mozilla/5.0'
}

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

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

    link = soup.find('div', 'organic-list-offer-right').find('a')['href']
    print(link)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

忘记默认是 0 了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

使用道具 举报

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

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

源代码中貌似没看到相关信息
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我仔细核对了一下网址,好像好像爬出来的网址不大对,我截了一张图,我想要的是这个标题下面的链接,这一页所有的这种标题下的链接
00.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-18 07:17:19 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 20:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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