使用Python从网页接收特定URL(Multireddit列表)

使用Python从网页接收特定URL(Multireddit列表),python,url,web-scraping,reddit,Python,Url,Web Scraping,Reddit,我试图对基于主题的multireddits进行一些统计分析。我没有手动收集每个子Reddit,而是找到了收集这些子Reddit(,)的网站 不幸的是,这些网站没有能力将子Reddit列表下载到可以在字典中使用的纯文本中。是否有一个具体的方法,我可以使用刮这些网站,只收到回网页上的每个附加超链接的URL 谢谢 编辑:这是我当前的代码 这是我当前的代码,它运行,但返回每个URL import requests from bs4 import BeautifulSoup import pandas

我试图对基于主题的multireddits进行一些统计分析。我没有手动收集每个子Reddit,而是找到了收集这些子Reddit(,)的网站

不幸的是,这些网站没有能力将子Reddit列表下载到可以在字典中使用的纯文本中。是否有一个具体的方法,我可以使用刮这些网站,只收到回网页上的每个附加超链接的URL

谢谢

编辑:这是我当前的代码

这是我当前的代码,它运行,但返回每个URL

import requests

from bs4 import BeautifulSoup

import pandas as pd

url = "https://snoopsnoo.com/subreddits/travel/"

page = requests.get(url)

data = page.text

soup = BeautifulSoup(data)

links = []

for link in soup.find_all('a'):

    reddit = link.get('href')

    links.append(reddit)


df = pd.DataFrame(links, columns=['string_values'])

df.to_csv('travel.csv')

此代码将获取所有标题

from selenium import webdriver

firefox_options = webdriver.FirefoxOptions()
#firefox_options.add_argument('--headless')

driver = webdriver.Firefox(executable_path='geckodriver.exe', firefox_options=firefox_options)
driver.get("https://snoopsnoo.com/subreddits/travel/")
for i in range(3):
    wds = driver.find_elements_by_class_name('title')
    for wd in wds:
        print(wd.text)
    driver.find_element_by_xpath('/html/body/div/div[2]/div[1]/ul/li/a').click
    print('next page')

driver.close()

3
更改为范围(3)内i的
中需要的
页面数:
取消注释
firefox\u选项。添加参数('--headless')
以使用headless模式此代码将获取所有标题

from selenium import webdriver

firefox_options = webdriver.FirefoxOptions()
#firefox_options.add_argument('--headless')

driver = webdriver.Firefox(executable_path='geckodriver.exe', firefox_options=firefox_options)
driver.get("https://snoopsnoo.com/subreddits/travel/")
for i in range(3):
    wds = driver.find_elements_by_class_name('title')
    for wd in wds:
        print(wd.text)
    driver.find_element_by_xpath('/html/body/div/div[2]/div[1]/ul/li/a').click
    print('next page')

driver.close()

3
更改为范围(3)中i的
所需的
页面数:
取消注释
firefox\u选项。添加参数('--headless')
以使用headless模式

是的,有这样的方法。如果您使用的是Python,那么一个广泛使用的库是Beautifulsoup。该库直接解析HTML,因此不需要webdriver,也不需要像selenium那样在后台运行webbrowser。您可以通过以下方式安装它:
pip install bs4

对于第一个示例站点:

import urllib
from bs4 import BeautifulSoup

# Load the url
url = "https://snoopsnoo.com/subreddits/travel/"
html = urllib.request.urlopen(url).read()
# Create the parser object
soup = BeautifulSoup(html)

# Find all panel headings
panels = soup.find_all(class_="panel-heading big")
# Find the <a>-elements and exctract the link
links = [elem.find('a')['href'] for elem in panels]
print(links)
导入urllib
从bs4导入BeautifulSoup
#加载url
url=”https://snoopsnoo.com/subreddits/travel/"
html=urllib.request.urlopen(url.read())
#创建解析器对象
soup=BeautifulSoup(html)
#查找所有面板标题
面板=汤。查找所有(class=“面板标题大”)
#找到-元素并删除链接
links=[elem.find('a')['href']用于面板中的元素]
打印(链接)

在这里,我检查了页面的内容以按类定位面板元素,然后提取了
-元素及其href属性。

是的,有这样的方法。如果您使用的是Python,那么一个广泛使用的库是Beautifulsoup。该库直接解析HTML,因此不需要webdriver,也不需要像selenium那样在后台运行webbrowser。您可以通过以下方式安装它:
pip install bs4

对于第一个示例站点:

import urllib
from bs4 import BeautifulSoup

# Load the url
url = "https://snoopsnoo.com/subreddits/travel/"
html = urllib.request.urlopen(url).read()
# Create the parser object
soup = BeautifulSoup(html)

# Find all panel headings
panels = soup.find_all(class_="panel-heading big")
# Find the <a>-elements and exctract the link
links = [elem.find('a')['href'] for elem in panels]
print(links)
导入urllib
从bs4导入BeautifulSoup
#加载url
url=”https://snoopsnoo.com/subreddits/travel/"
html=urllib.request.urlopen(url.read())
#创建解析器对象
soup=BeautifulSoup(html)
#查找所有面板标题
面板=汤。查找所有(class=“面板标题大”)
#找到-元素并删除链接
links=[elem.find('a')['href']用于面板中的元素]
打印(链接)

在这里,我检查了页面内容以按类定位面板元素,然后提取了
-元素及其href属性。

是否有方法专门按“/r/”进行筛选?我将当前代码附加到顶部。您可以添加,如果链接包含该字符串,则仅包含该链接:
如果reddit:links中的“/r/”。附加(reddit)
是否有方法专门按“/r/”进行筛选?我将当前代码附加到顶部。您可以添加,只有当链接包含该字符串时,才包含该链接:
if'/r/“in reddit:links.append(reddit)