안녕하세요! 크롤링 중 질문드리고 싶습니다.

bedals의 이미지

다음과 같은 사이트에서 업종,업소명,주소,담당자,연락처 등을
추출하였는데 여기에서 업소명과 연락처만 추출 할 수 있는 방법이 있을까요?

# -*- coding: utf-8 -*-
"""
Created on Mon Jul  1 16:33:25 2019
 
@author: Administrator
"""
 
import requests
from bs4 import BeautifulSoup
a=142
k=0
informationlist=[]
file = open('data1.txt', 'w', encoding = 'utf-8')
for k in range(143):
 headers = {'User-Agent': 'Mozilla/5.0'}
 URL = 'https://qqalba.com/bbs/board.php?bo_table=job&wr_id='+str(k)
 res = requests.get(URL, headers=headers)
 soup = BeautifulSoup(res.text)
 titles =soup.find_all('div', class_="job_vtop")
 for title in titles:
        item_name = title.find('div',class_='tbl_wrap5 tbl_frm05').get_text().strip()
        print(item_name)
        informationlist.append(item_name)
        file.write(item_name + '\n')
file.close()
파이썬3의 이미지

https://gitlab.com/soyeomul/test/raw/82a31705720c4a3bc4e5032cb3009873fd003286/161823.py

일단 전화번호/업소명 추출하는 산법이 좀 빡세더이다...

t_list = []
s_list = []
for i in informationlist:
    lines = i.split("\n")
    for j in range(0, len(lines)):
        if "연락처" in lines[j]:
            tel = lines[j+1]
            t_list.append(tel)
        if "업소명" in lines[j]:
            shop = lines[j+1]    
            s_list.append(shop)
황병희의 이미지

출처: https://sancs.tistory.com/21

상크스님의 블로그에 소개된 방법을 쓰면 더 간단하게 추출할 수 있더라구요,,,

...
    lines = i.split("\n")
    tel = lines[lines.index("연락처")+1]
    shop = lines[lines.index("업소명")+1]
...

바로 아래에다 print(tel, shop) 로 바로 출력해도 되구요,
다른 변수(t_list/s_list) 등에 리스트형식으로 담아도(append) 되구요,,

[ibus-hangul(서라운딩 패치판)에서 작성했습니다]

--
ㄱㅅㅎㄴㄷ!

황병희의 이미지

소스코드: https://gitlab.com/soyeomul/test/raw/e8478afce07bb13ad23dba128321660373f724ea/161823.py

bs4 대신 curl 로 새롭게 구성했더니 긁어오는 속도가 더 빠릅니다.

[ibus-hangul(서라운딩 패치판)에서 작성했씁니다]

--
ㄱㅅㅎㄴㄷ!

황병희의 이미지

그냥 print 하느냐 파일에 쓰느냐를 선택할 수 있도록 class 를 좀 보완했습니다.
기본값은 print() 인데, 파일에 쓰려면 WRITE_MODE 값을 True 로 바꾸면 됩니다.

갱신된 소스코드: https://gitlab.com/soyeomul/test/raw/7efd1eed3e3a58556004e0994fe8fd271c48b39a/161823.py

[ibus-hangul(서라운딩 패치판)에서 작성했씁니다]

--
ㄱㅅㅎㄴㄷ!

황병희의 이미지

오늘 점심때 우연히 142개 페이지 모두 질의 후 결과를 받아보니깐...
142개가 아니라 102개였씁니다. 그래서 실존하는 URL ID 를 목록에 함께 보이게끔 코드를 보완했습니다.
갱신된 소스코드: https://gitlab.com/soyeomul/test/raw/a20cc9be280a5ecb1abec5a891e0326fafc58b60/161823.py

출력결과에 없는 페이지를 실제로 파여폭스로 방문하니깐 없는 주소였씁니다 ===> "게시글이 이동되었거나 삭제되었습니다"

[uid:001] 010-8827-7794	가락동 ART2
[uid:002] 010-7654-2119	퀸
[uid:003] 010-2491-2124	안전
[uid:004] 010-4866-9542	Goose Bar
[uid:005] 010-4276-7902	로렌아로마
[uid:006] 010-4044-3727	벤츠
[uid:007] 010-4646-6938	동탄 ♡굿ㆍ향기♡
[uid:008] 010-2123-1522	둘리
[uid:009] 010-4184-5588	BAR11CLUB
[uid:010] 010-4926-1374	꿀다방
[uid:011] 010-4862-0558	강남더킹
[uid:012] 010-4469-1809	명월관
[uid:013] 01071207362	강서 강냉이
[uid:016] 01067148870	프라다
[uid:019] 010-7650-4125	아트
[uid:022] 010-5715-5067	삼성
[uid:026] 010-2062-3474	야호정
[uid:030] 010-2400-9333	송파룸알바
[uid:031] 01088580086	The Day
[uid:032] 010-3425-4352	키티90
[uid:036] 010-7997-1463	여시아로마
[uid:038] 010-4979-8015	마세라티
[uid:039] 01073551910	천안
[uid:040] 010-2929-6918	잠실1등샵
[uid:041] 010 -3487-3756	판타스틱
[uid:043] 010 7396 3231	나이아가라
[uid:044] 010-2081-3508	추카추카
[uid:045] 010-3943-6669	수원 인계동 안마
[uid:046] 01087575501	추카추카
[uid:047] 01056095927	마블
[uid:048] 01083646968	아마존
[uid:049] 010-7430-6877	러브홀릭
[uid:051] 010-7938-9280	부천놀이터
[uid:052] 01064675884	큐티
[uid:067] 010-3564-6157	굿모닝
[uid:071] 010-4559-8989	더킹
[uid:072] 010-3000-8781	강남제네바
[uid:073] 01040501300	나이아가라호텔 히어로
[uid:074] 01027841654	꽃님이
[uid:075] 01042002792	신림스타일
[uid:076] 01080019942	간지
[uid:077] 010-9332-3531	코코
[uid:078] 010-9332-3531	코코
[uid:079] 010-4837-3615	신림1등탑
[uid:080] 010-3475-2477	팜므파탈
[uid:081] 010-5440-5449	더블유
[uid:082] 01024706194	러블리
[uid:083] 010-7679-4300	타임스웨디시
[uid:084] 010-5639-4094	뷰티풀
[uid:085] 010-3875-3222	명품
[uid:086] 01073739798	술마시는보스노래홀
[uid:087] 01059668330	세븐
[uid:088] 010 4582 3358	스카이
[uid:091] 010-2465-5671	엔젤이벤트
[uid:092] 010-2788-4601	파로스
[uid:094] 01031141890	썸노래방
[uid:095] 01022984462	엠
[uid:097] 01079998974	히든싱어
[uid:098] 01097170045	수영♡쿠팡
[uid:099] 01075183359	EVER
[uid:100] 010-6683-8741	북수원 가향
[uid:101] 01076818299	오피스텔
[uid:102] 010-2756-0325	인천 봄날
[uid:103] 01046137958	시크릿
[uid:104] O1O-7453-7244	블랙티
[uid:105] 010-8139-2221	TIME
[uid:106] 010-9794-4259	아이린
[uid:107] 01043623325	민트
[uid:108] 01065480850	도쿄
[uid:109] 01058266223	로즈
[uid:111] 01072335953	인천 스테파니
[uid:112] 010-2544-5232	중독
[uid:113] 010-2463-6745	티아라
[uid:114] 010-4638-1959	핑크아로마
[uid:115] 010-6262-4584	레이디
[uid:116] 010-6226-7353	신림마블
[uid:117] 010-2226-2883	MAYB
[uid:118] 01071274325	던힐투
[uid:119] 010 4539 3777	만남가요주점
[uid:120] 010-8668-0673	나비
[uid:121] 010-7532-3841	초콜릿
[uid:122] 010-6376-0112	지젤
[uid:123] 01028116930	도도
[uid:124] 010-5131-5467	국제테라피
[uid:125] 010-5644-9662	귀청소방
[uid:126] 01020366683	아로마마사지
[uid:127] 01026732396	즐거운
[uid:128] 010-8913-7373	로타리소개소
[uid:129] 01059436920	잠실궁전
[uid:130] 010-2691-1254	여명
[uid:131] 010-7430-6877	킹덤
[uid:132] 01091114933	와우
[uid:133] 01076169897	feel
[uid:134] 01047754137	아우토반 A+
[uid:135] 01057556324	골든벨
[uid:136] 010-3110-2846	해피데이
[uid:137] 010-9726-1658	실루엣
[uid:138] 010-2607-8107	ing
[uid:139] 0101111111	여자친구
[uid:140] 01041851985	유토피아
[uid:141] 01098662002	☎안산☎정☎
[uid:142] 010-8807-6266	♣♣토마토♣♣

[ibus-hangul(서라운딩 패치판)에서 작성했습니다]

--
ㄱㅅㅎㄴㄷ!

익명 사용자의 이미지

뭔가 itertools에 이런 비슷한 기능이 있어야 할 것 같은데...

없는 것 같아서 간단히 한 번 만들어 본 뒤 그걸 이용해 봤습니다.

def slide(l, n):
    ret = tuple()
    for e in l:
        ret = ret + (e,)
        if len(ret) == n:
            yield ret
            ret = ret[1:]
 
for k, v in slide(i.split("\n"), 2):
    if k == '연락처':
        tel = v
    elif k == '업소명':
        shop = v
황병희의 이미지

일단 북마크 해뒀다가 소여물 준후에 한번 실험해보겠습니다.
소중한 코드 감사드립니다^^^

[ibus-hangul(서라운딩 패치판)에서 작성했습니다]

--
ㄱㅅㅎㄴㄷ!

황병희의 이미지

반영한 새코드: https://gitlab.com/soyeomul/test/blob/fe3781cd1e67371ac32c49466ec8ec0ce9af93f1/161823.py

잘 돌아갑니다!!!

감사합니다 익명사용자님^^^

[ibus-hangul(서라운딩 패치판)에서 작성했씁니다]

--
ㄱㅅㅎㄴㄷ!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.