Я хочу удалить все ссылки, которые есть на веб-сайте, и хочу отфильтровать их, чтобы я мог их потом увидеть.
Проблема в том, что URL-адрес позволяет сказать
URL = "https://stackoverflow.com/questions/"
мой скребок должен удалить и предоставить URL-адреса, такие как
https://stackoverflow.com/questions/51284071/how-to-get-all-the-link-in-page-using-selenium-python
https://stackoverflow.com/questions/36927366/how-to-get-the-link-to-all-the-pages-of-a-website-for-data-scrapping
https://stackoverflow.com/questions/46468032/python-selenium-automatically-load-more-pages
В настоящее время я заимствовал код из StackOverflow
import requests
from bs4 import BeautifulSoup
def recursiveUrl(url, link, depth):
if depth == 10:
return url
else:
# print(link['href'])
page = requests.get(url + link['href'])
soup = BeautifulSoup(page.text, 'html.parser')
newlink = soup.find('a')
if len(newlink) == 0:
return link
else:
return link, recursiveUrl(url, newlink, depth + 1)
def getLinks(url):
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
links = soup.find_all('a')
for link in links:
try:
links.append(recursiveUrl(url, link, 0))
except Exception as e:
pass
return links
links = getLinks("https://www.businesswire.com/portal/site/home/news/")
print(links)
И я думаю, что вместо просмотра всех страниц он просматривает все гиперссылки предоставлено на веб-странице.
Я также упоминал об этом
link = "https://www.businesswire.com/news"
from scrapy.selector import HtmlXPathSelector
from scrapy.spider import BaseSpider
from scrapy.http import Request
DOMAIN = link
URL = 'http://%s' % DOMAIN
class MySpider(BaseSpider):
name = DOMAIN
allowed_domains = [DOMAIN]
start_urls = [
URL
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
for url in hxs.select('//a/@href').extract():
if not ( url.startswith('http://') or url.startswith('https://') ):
url= URL + url
print (url)
yield Request(url, callback=self.parse)
Но это слишком старо и не работает.
Утилизация для меня новость, поэтому я могу застрять в некоторых основах c фундамент.
Дайте мне знать, как решить эту проблему.