首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从“每个页面”中获取“页面链接”?

如何从“每个页面”中获取“页面链接”?
EN

Stack Overflow用户
提问于 2019-11-18 23:14:17
回答 2查看 29关注 0票数 1

我想从python3的“每一页”中获得“每一页链接”。

在我的代码中,“每个页面”所在的位置是BaseUrl。而且,在我的代码中,每个页面的链接都位于body中。

哪里,

代码语言:javascript
复制
BaseUrl = 'https://www.jobplanet.co.kr/companies?sort_by=review_compensation_cache&industry_id=700&page='

select body = #listCompanies > div > div.section_group > section:nth-child(1) > div > div > dl.content_col2_3.cominfo > dt > a'

请检查我的代码。我想从每个网页收集每个链接,使作为linkUrl的链接列表。有什么问题吗?

代码语言:javascript
复制
from bs4 import BeautifulSoup
import csv
import os
import re
import requests
import json

# jobplanet
BaseUrl = 'https://www.jobplanet.co.kr/companies?sort_by=review_compensation_cache&industry_id=700&page='


for i in range(1, 5, 1):
        url = BaseUrl + str(i)
        r = requests.get(url)
        soup = BeautifulSoup(r.text,'lxml')
        body = soup.select('#listCompanies > div > div.section_group > section:nth-child(1) > div > div > dl.content_col2_3.cominfo > dt > a')
        #print(body)

        linkUrl = []
        for item in body:
            link = item.get('href')
            linkUrl.append(link)
print(linkUrl)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-19 03:03:36

您选择的CSS选择器只返回一条记录。我提供了一个更简单的css选择器,可以在每页返回全部10条记录。

你需要在循环之外定义list。

代码语言:javascript
复制
from bs4 import BeautifulSoup
import requests

linkUrl = []
BaseUrl = 'https://www.jobplanet.co.kr/companies?sort_by=review_compensation_cache&industry_id=700&page={}'
for i in range(1, 6):
    url = BaseUrl.format(i)
    r = requests.get(url)
    soup = BeautifulSoup(r.text,'lxml')
    links=soup.select(".us_titb_l3 >a")
    for item in links:
        link = item.get('href')
        linkUrl.append(link)

print(linkUrl)
票数 1
EN

Stack Overflow用户

发布于 2019-11-19 10:40:33

您的Css选择器是错误的,还添加了分页

代码语言:javascript
复制
from bs4 import BeautifulSoup
import csv
import os
import re
import requests
import json
from urllib import parse

# jobplanet
BaseUrl = 'https://www.jobplanet.co.kr/companies?sort_by=review_compensation_cache&industry_id=700&page={}'
source  =  requests.get(BaseUrl.format(1))
soup = BeautifulSoup(source.text,'lxml')
last_page_index = soup.select('a[class="btn_pglast"]') # getting the last page index 
last_page_index = int(last_page_index[0].get('href').split('page=')[1]) if last_page_index else 1
for i in range(1, last_page_index):
    print('## Getting Page {} out of {}'.format(i,last_page_index))
    if i > 1: # to avoid getting the same page again
        url = BaseUrl.format(i)
        r = requests.get(url)
        soup = BeautifulSoup(r.text,'lxml')
    body = soup.select('dt[class="us_titb_l3"] a')
    linkUrl = []
    for item in body:
        link = item.get('href')
        link = parse.urljoin(BaseUrl, link)
        linkUrl.append(link)
print(linkUrl)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58917641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档