lizhiyong_11 发表于 2020-1-28 12:33:07

怎么让他循环起来

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个链接,现在我只能提取到一个,怎么能让他循环起来呢

_2_ 发表于 2020-1-28 15:10:15

本帖最后由 _2_ 于 2020-1-29 21:12 编辑

在第7行加一句
for i in range(1,51):
后面的代码全部缩进一格

zltzlt 发表于 2020-1-29 10:48:18

_2_ 发表于 2020-1-28 15:10
在第7行加一句

后面的代码全部缩进一个

为什么是 range(51),而不是 range(50) ?

lizhiyong_11 发表于 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) 是没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

hrp 发表于 2020-1-29 20:32:12

lizhiyong_11 发表于 2020-1-29 20:27
range(stop)
range(start, stop[, step])
参数说明:


range(50)不是循环50次了吗,0到49,一共50个

_2_ 发表于 2020-1-29 20:32:40

zltzlt 发表于 2020-1-29 10:48
为什么是 range(51),而不是 range(50) ?

次数的问题?

lizhiyong_11 发表于 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个不同的网址,你每点击一个就进入到一个不同的界面,我想把这些网址都提取出来

lizhiyong_11 发表于 2020-1-29 20:43:09

hrp 发表于 2020-1-29 20:32
range(50)不是循环50次了吗,0到49,一共50个

是50个没毛病,我看上边的鱼友问了一下,我就给他去找了一个答案,哈哈哈,不过倒是没有解决我的问题

_2_ 发表于 2020-1-29 20:56:51

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

你能确定就有50个吗?

lizhiyong_11 发表于 2020-1-29 20:56:58

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

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

zltzlt 发表于 2020-1-29 20:58:01

_2_ 发表于 2020-1-29 20:32
次数的问题?

range(51) 循环了 51 次

zltzlt 发表于 2020-1-29 21:01:44

_2_ 发表于 2020-1-29 20:56
你能确定就有50个吗?

证据在这里:

>>> len(list(range(51)))
51
>>> len(list(range(50)))
50

lizhiyong_11 发表于 2020-1-29 21:03:28

zltzlt 发表于 2020-1-29 20:58
range(51) 循环了 51 次

对不起,对不起,你说的是对的,是我错了,range(51)确实是循环了51次

zltzlt 发表于 2020-1-29 21:06:29

我想到了一个方法。页数在网址上能显示出来:

zltzlt 发表于 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)

_2_ 发表于 2020-1-29 21:11:26

zltzlt 发表于 2020-1-29 21:07
最终代码:

忘记默认是 0 了{:10_250:}

lizhiyong_11 发表于 2020-1-29 21:39:43

zltzlt 发表于 2020-1-29 21:07
最终代码:

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

再请教一个问题,帖子开头我说循环50次是我自己去那个界面去查的应该有50个,但是实际上好像不对哎,有没有什么办法让他自动识别这个页面到底有几个我想要的企业呢?我贴一个链接哈
https://www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&CatId=&SearchText=lift+table

zltzlt 发表于 2020-1-29 21:41:01

lizhiyong_11 发表于 2020-1-29 21:39
佩服,佩服,完全解决了我这个帖子的问题。

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

源代码中貌似没看到相关信息

lizhiyong_11 发表于 2020-1-29 21:48:52

zltzlt 发表于 2020-1-29 21:41
源代码中貌似没看到相关信息

我仔细核对了一下网址,好像好像爬出来的网址不大对,我截了一张图,我想要的是这个标题下面的链接,这一页所有的这种标题下的链接

龙舞九天 发表于 2021-5-18 07:17:19

{:5_95:}
页: [1]
查看完整版本: 怎么让他循环起来