【问题标题】:python web scraping from a site [duplicate]python 从网站抓取网页[重复]
【发布时间】:2020-03-09 15:23:00
【问题描述】:

嗨,我使用 BeautifulSoup 从 https://maktabkhooneh.org/plus/ 捕获 {'class':'course-card__title'} 我现在想找到所有 (THIS) THIS 并打印出来我的代码是:

import re
import requests
from bs4 import BeautifulSoup
r = requests.get('https://maktabkhooneh.org/plus/')
soup = BeautifulSoup(r.text, 'html.parser')
results = soup.find_all('div', attrs={'class':'course-card__title'})
print(results)
x = re.findall(r'\<div class=\'course-card__title\'>(\w+)\<\/div\>',results)
print(x)

但是我有错误可以帮助我吗?

【问题讨论】:

  • [el.text for el in results]

标签: python regex web-scraping beautifulsoup


【解决方案1】:

我想你不是真的想要这里的正则表达式,我猜。您可能希望循环访问results

测试 1

import re
import requests
from bs4 import BeautifulSoup
r = requests.get('https://maktabkhooneh.org/plus/')
soup = BeautifulSoup(r.text, 'html.parser')
results = soup.find_all('div', attrs={'class': 'course-card__title'})
for item in results:
    print(item.text)

输出 1

آموزش تحلیل داده با زبان برنامه نویسی R (مقدماتی)
IELTS: Listening
آموزش تحليل تكنيكال مقدماتی
آموزش برنامه‌نویسی با پایتون (پیشرفته)
General English: Beginner
Grammar for IELTS
آموزش میکروکنترلر ARM
آموزش پایتون مقدماتی

但如果你这样做了,也许你想用str() 包装你的输入到re.findall()

测试 2

import re
import requests
from bs4 import BeautifulSoup
r = requests.get('https://maktabkhooneh.org/plus/')
soup = BeautifulSoup(r.text, 'html.parser')
results = soup.find_all('div', attrs={'class': 'course-card__title'})
for item in results:
    x = re.findall(
        r'<div class="course-card__title">([^<]*)</div>', str(item))
    print(x)

输出 2

['آموزش تحلیل داده با زبان برنامه نویسی R (مقدماتی)']
['IELTS: Listening']
['آموزش تحليل تكنيكال مقدماتی']
['آموزش برنامه\u200cنویسی با پایتون (پیشرفته)']
['General English: Beginner']
['Grammar for IELTS']

【讨论】:

  • 感谢它对我帮助很大。现在我知道该怎么做了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-30
  • 2018-09-01
  • 1970-01-01
相关资源
最近更新 更多