怎么让他循环起来
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-29 21:12 编辑
在第7行加一句
for i in range(1,51):
后面的代码全部缩进一格 _2_ 发表于 2020-1-28 15:10
在第7行加一句
后面的代码全部缩进一个
为什么是 range(51),而不是 range(50) ? 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) lizhiyong_11 发表于 2020-1-29 20:27
range(stop)
range(start, stop[, step])
参数说明:
range(50)不是循环50次了吗,0到49,一共50个 zltzlt 发表于 2020-1-29 10:48
为什么是 range(51),而不是 range(50) ?
次数的问题? _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个不同的网址,你每点击一个就进入到一个不同的界面,我想把这些网址都提取出来 hrp 发表于 2020-1-29 20:32
range(50)不是循环50次了吗,0到49,一共50个
是50个没毛病,我看上边的鱼友问了一下,我就给他去找了一个答案,哈哈哈,不过倒是没有解决我的问题 lizhiyong_11 发表于 2020-1-29 20:43
是50个没毛病,我看上边的鱼友问了一下,我就给他去找了一个答案,哈哈哈,不过倒是没有解决我的问题
你能确定就有50个吗? 各位鱼油大家好
这个爬虫的需求是通过alibba这个网站搜索一些企业,要获取这个企业的一些信息,比如公司的名字,电话,网址等等,是我女朋友的需求,本人菜鸟一枚,自己是知道的,所以也没有抱着写出来的目的,本着学习的态度来搞一下。最终已经花钱在淘宝上找人写了代码,可以成功运行
我举一个例子啊,比如想在阿里巴巴上查一下lift table的企业相关信息,大概过程是这样的打开www.alibaba.com这个网站,在搜索框里输入lift table,你会得到一大串的结果,然后点击第一个进去,我想要的信息就在这里面。然后退回到刚刚搜索出来的结果界面,进到第二个里面去,然后把相关信息提取出来,大概就是这样。我想我应该是把我的大概意思表达出来了 _2_ 发表于 2020-1-29 20:32
次数的问题?
range(51) 循环了 51 次 _2_ 发表于 2020-1-29 20:56
你能确定就有50个吗?
证据在这里:
>>> len(list(range(51)))
51
>>> len(list(range(50)))
50 zltzlt 发表于 2020-1-29 20:58
range(51) 循环了 51 次
对不起,对不起,你说的是对的,是我错了,range(51)确实是循环了51次 我想到了一个方法。页数在网址上能显示出来:
最终代码:
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) zltzlt 发表于 2020-1-29 21:07
最终代码:
忘记默认是 0 了{:10_250:} zltzlt 发表于 2020-1-29 21:07
最终代码:
佩服,佩服,完全解决了我这个帖子的问题。
再请教一个问题,帖子开头我说循环50次是我自己去那个界面去查的应该有50个,但是实际上好像不对哎,有没有什么办法让他自动识别这个页面到底有几个我想要的企业呢?我贴一个链接哈
https://www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&CatId=&SearchText=lift+table lizhiyong_11 发表于 2020-1-29 21:39
佩服,佩服,完全解决了我这个帖子的问题。
再请教一个问题,帖子开头我说循环50次是我自己去那个界面 ...
源代码中貌似没看到相关信息 zltzlt 发表于 2020-1-29 21:41
源代码中貌似没看到相关信息
我仔细核对了一下网址,好像好像爬出来的网址不大对,我截了一张图,我想要的是这个标题下面的链接,这一页所有的这种标题下的链接 {:5_95:}
页:
[1]