如何通过搜寻器获取简单信息

杜桑·比加(Dusan Biga)

我正在尝试制作一个简单的爬网程序,该爬网程序通过以下https://en.wikipedia.org/wiki/Web_scraping页面进行抓取,然后从“关于”部分中提取19个链接。我设法做到这一点,但是我也试图从这19个链接中的每一个中提取第一段,这就是它停止“起作用”的地方。我从第一页得到相同的段落,而不是从每一页得到。到目前为止,这就是我所拥有的。我知道这样做可能会有更好的选择,但我想坚持使用BeautifulSoup和简单的python代码。

from urllib.parse import urljoin
import requests
from bs4 import BeautifulSoup

url = 'https://en.wikipedia.org/wiki/Web_scraping'

data = requests.get('https://en.wikipedia.org/wiki/Web_scraping').text

soup = BeautifulSoup(data, 'html.parser')


def visit():
    try:
        p = soup.p
        print(p.get_text())
    except AttributeError:
        print('<p> Tag was not found')


links_todo = []
links = soup.find('div', {'class': 'div-col'}).find_all('a')
for link in links:
    if 'href' in link.attrs:
        links_todo.append(urljoin(url, link.attrs['href']))

while links_todo:
    url_to_visit = links_todo.pop()
    print('Now visiting:', url_to_visit)
    visit()

第一次打印的例子

Now visiting: https://en.wikipedia.org/wiki/OpenSocial
Web scraping, web harvesting, or web data extraction is data scraping used for extracting data from websites. The web scraping software may directly access the World Wide Web using the Hypertext Transfer Protocol or a web browser. While web scraping can be done manually by a software user, the term typically refers to automated processes implemented using a bot or web crawler. It is a form of copying in which specific data is gathered and copied from the web, typically into a central local database or spreadsheet, for later retrieval or analysis.

预期的功能应该是它为每个打印的新链接打印第一段,而不是与第一个链接相同的段。为了解决这个问题,我需要做什么?或关于我所缺少的任何提示。我对python相当陌生,因此我在研究事物时仍在学习概念。

松树

在代码的顶部,您定义datasoup两者都捆绑在一起https://en.wikipedia.org/wiki/Web_scraping

每次调用时visit(),都从打印soup,并且soup永远不会更改。

您需要将该网址传递给visit(),例如visit(url_to_visit)visit函数应接受url作为参数,然后使用来访问页面requests,并根据返回的数据创建一个新的汤,然后打印第一段。

编辑以添加解释我的原始答案的代码:

from urllib.parse import urljoin
import requests
from bs4 import BeautifulSoup
 
start_url = 'https://en.wikipedia.org/wiki/Web_scraping'
# Renamed this to start_url to make it clear that this is the source page 
data = requests.get(start_url).text
 
soup = BeautifulSoup(data, 'html.parser')
 
 
def visit(new_url): # function now accepts a url as an argument
    try:
        new_data = requests.get(new_url).text # retrieve the text from the url
        new_soup = BeautifulSoup(new_data, 'html.parser') # process the retrieved html in beautiful soup
        p = new_soup.p
        print(p.get_text())
    except AttributeError:
        print('<p> Tag was not found')
 
 
links_todo = []
links = soup.find('div', {'class': 'div-col'}).find_all('a')
for link in links:
    if 'href' in link.attrs:
        links_todo.append(urljoin(start_url, link.attrs['href']))
 
while links_todo:
    url_to_visit = links_todo.pop()
    print('Now visiting:', url_to_visit)
    visit(url_to_visit) # here's where we pass each line to the visit() function

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过搜寻器获取简单信息

来自分类Dev

Python搜寻器通过使用Selenium和PhantomJS获取DOM信息

来自分类Dev

如何增加Apache Nutch搜寻器获取的文档数量

来自分类Dev

如何保持网络搜寻器运行?

来自分类Dev

如何自动运行搜寻器?

来自分类Dev

识别搜寻器

来自分类Dev

识别搜寻器

来自分类Dev

简单的Python搜寻器/ Spider运行时错误

来自分类Dev

如何获取我的代码以停止在我的网络搜寻器中打印关键字

来自分类Dev

如何使用网络搜寻器从URL获取正确的源代码与Python?

来自分类Dev

如何获取我的代码以停止在我的网络搜寻器中打印关键字

来自分类Dev

如何处理AJAX搜寻器的?_escaped_fragment_ =?

来自分类Dev

如何防止Rollbar报告SEO搜寻器活动?

来自分类Dev

Web搜寻器尝试

来自分类Dev

运行scrapy搜寻器的最简单方法,因此它不会阻止脚本

来自分类Dev

尝试创建一个简单的python Web搜寻器

来自分类Dev

使用自定义搜寻器防止虚假的分析统计信息

来自分类Dev

然后通过电子邮件发送结果的Python搜寻器

来自分类Dev

网络搜寻器无法正常工作

来自分类Dev

Python搜寻器验证图片

来自分类Dev

搜寻器返回空结果

来自分类Dev

Web搜寻器在列表之间提取

来自分类Dev

Scrapy递归链接搜寻器

来自分类Dev

Google是否使用BLEXBot搜寻器?

来自分类Dev

关于Cookie搜寻器的想法?

来自分类Dev

Web搜寻器网址错误

来自分类Dev

Web搜寻器-以下链接

来自分类Dev

Python中的多线程搜寻器

来自分类Dev

搜寻器的并发问题