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